版本 : AF3.7
設定檔 : PASE / applicationctx-cache.xml
為改善在不同的transaction工作中,因為存取到同一個cache 物件而造成cache lock互等的情況,AF3.7設計了一個存放cache queue pool的方式,將判斷到符合設定檔中定義的相關cache 物件,在update cache後就先放到pool中等transaction執行完成後再以另外的thread 慢慢消化更新pool 中存放的cache,好讓transaction可以繼續往下執行而不用等同一個cache lock release 後才能執行後續動作。但如果在流程Action 的Script 中有利用API 大量存取設定檔中定義的相關cache 物件,例如定時組織同步的流程,可能因為同時存取的cache 數量超過預設的queue pool size 而造成transaction停住而發生transaction time out 的情況,可以依需求自行調整PASE / applicationctx-cache.xml 設定檔中 queue pool size的大小,如下紅字:
< constructor-arg >
< value >1000 < /value >
< /constructor-arg >
備註 :
預設為1000,假設組織同步可能會更新組織相關物件,例如部門、職務、人員等,加總數量約10000,建議可調整為 12000 ~ 15000,約1.2 ~ 1.5 倍,但調大會佔用更多記憶體,所以要確保PASE設定的記憶體MAX數值是足夠的。
==============================================================================================================================
問題:為何我們上線AF效能出現異常問題 是遇到多位user再做查詢報表,
效能loading變慢,是不是有什麼要調整或者注意什麼事情?
回覆:
根據您提供 PASE Server log 附件檔案內容顯示,我們發現其主要原因說明如下:
1. 附件log內容顯示 出現了一大堆 [TDS Driver]Read timed out 訊息,
PASE Server 系統預設 sql server response time is 30s。
2. 請客戶檢查一下資料庫或網路是否正常,且資料庫儘可能的只服務PASE server。
3.請貴公司 MS-SQL Server 2000 系統 DBA針對執行較慢的sql 指令當中加入index,可加速PASE效能。 建議 index table 整理說明如下:
請在AF 資料庫資料庫加入index
CREATE INDEX IX_Tsk_E_S ON Task(ExeID,State)
CREATE INDEX IX_TskExeID ON Task(ExeID)
CREATE INDEX IX_TskParentID ON Task(ParentID)
CREATE INDEX IX_TskRootID ON Task(RootID)
CREATE INDEX IX_TskMemID ON Task(MemID)
CREATE INDEX IX_TskState ON Task(State)
CREATE INDEX IX_TskType ON Task(Type)
CREATE INDEX IX_TskKeyWord ON Task(KeyWord)
CREATE INDEX IX_Tsk_E_S_T ON Task(ExeID,State,Type)
CREATE INDEX IX_Tsk_R_S_M_E_T ON Task(RootID,State,MemID,ExeID,Type)
Other CREATE INDEX Field column by (INSID) for every Artifate Form(under project) such as :
ARTXXX_INS / ARTXXX_LOG ….etc .
For example :
1.CREATE INDEX IX_Tsk_E_S ON ARTXXX_INS (INSID);
2.CREATE INDEX IX_Tsk_E_S ON ARTXXX_LOG (INSID);
Some detail description by the following items :
ART123456789012_Form 表單元件屬性
ART123456789012_Ins 表單目前所存資料
ART123456789012_Log 表單各關當時資料
ART123456789012Item52 表單內table元件目前所存資料
ART123456789012Item52Log 表單內table件各關卡當時資料
所以我們設計之專案範例本身e-Form 就有Table 元件。
==============================================================================================================================
您好,
於 AF37 若 PASE log 中出現以下訊息, 表示 PASE 與資料庫的存取連線執行時間過久.
transaction timeout rollback :
Transaction has been marked as rollback-only: com.atomikos.spring.jdbc.tm0036200124
at com.flowring.cache.interceptor.caching.AbstractUpdatingInterceptor.invoke(AbstractUpdatingInterceptor.java:46)
這方面可以去調整
PASE\applicationctx-transaction.xml
bean id="AtomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" depends-on="userTransactionService">
property name="transactionTimeout" value="預設180秒,這邊可加大"/
與調整
PASE\jta.properties
# Set the max timeout (in milliseconds) for local transactions
com.atomikos.icatch.max_timeout=預設300秒,這邊可加大
來延長連線時間, 不至於出現此訊息.
需注意的是, 存取連線的時間不可無限制延長,
需考慮資料庫本身的負荷等狀況來調整.
==============================================================================================================================
如果不是 Script 問題,那請問這段 Log 上面是否還有其他訊息?
如果沒有,也請您將 PASE\log4j.properties 的 log4j.category.pase.server 改為 DEBUG,例如:
log4j.category.pase.server=DEBUG
之後再重新手動啟動這筆流程,並將 Log 提供給客服,我們會盡快替您查看問題。
==============================================================================================================================
1. 當 PASE\build.xml 設定 maxmemory="128m"
以下 SQL 執行約 4.6 秒
2. 當 PASE\build.xml 設定 maxmemory="512m"
以下 SQL 執行約 1 秒
==============================================================================================================================
1.在 PASE 的設定內,將取消記憶體暫存功能打勾即可。
2.建議在正式機上不要將記憶體暫存取消。
3.WebAgenda 的 偵錯模式 請設定為 Developer,這樣才不會Web 端 Cache 住表單。
==============================================================================================================================
請編輯PDE\Cliient.bat與PDE\Server.bat 檔案最大記憶體。
%JAVAEXE% -Xms256m -Xmx512m -Dpde.debug=false pde.PDE %1
%JAVAEXE% -Dserver.debug=true -Xms1024m -Xmx2048m login.PDEServer
==============================================================================================================================
您好,
於 AF37 若 PASE log 中出現以下訊息, 表示 PASE 與資料庫的存取連線執行時間過久.
transaction timeout rollback :
Transaction has been marked as rollback-only: com.atomikos.spring.jdbc.tm0036200124
at com.flowring.cache.interceptor.caching.AbstractUpdatingInterceptor.invoke(AbstractUpdatingInterceptor.java:46)
這方面可以去調整
PASE\applicationctx-transaction.xml
bean id="AtomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" depends-on="userTransactionService">
property name="transactionTimeout" value="預設180秒,這邊可加大"/
與調整
PASE\jta.properties
# Set the max timeout (in milliseconds) for local transactions
com.atomikos.icatch.max_timeout=預設300秒,這邊可加大
來延長連線時間, 不至於出現此訊息.
需注意的是, 存取連線的時間不可無限制延長,
需考慮資料庫本身的負荷等狀況來調整.
沒有留言:
張貼留言