我們有一個由Apache Aries在保險絲結構中包裝的OracleXADataSource(如this article)。如果我繼續發送大量的請求到服務器,它開始拋出以下錯誤:保險絲分佈式tx管理器不會釋放數據庫會話
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
當我檢查使用下面的查詢會話,在甲骨文每個請求後,它不斷出現下數量增加當前利用率。
select resource_name, current_utilization, max_utilization, limit_value
from v$resource_limit
where resource_name in ('sessions', 'processes', 'transactions');
CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE processes 545 768 800 sessions 553 774 1222 transactions 0 0 UNLIMITED
大多數針對此問題提出建議說,增加過程和會議在甲骨文的限制,但這會暫時解決問題,直到我們達到一定的負載我我很擔心。
我發現/試過以下到目前爲止:
- Perodically當負荷增加(或一定量的時間花費)的會話和過程得到一個更大的量減小(100-200 )。 (我猜Geronimo會定期發佈會話)。而此時被釋放了一些會議的同時,交易活躍欄顯示相同金額:
CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE processes 355 768 800 sessions 363 774 1222 transactions 122 122 UNLIMITED
- 如果我關閉保險絲,該過程值回到初始大小立即(所以問題在客戶端)
- 如果我關閉分佈式事務支持,那麼一切都很好,進程根本不增加
我嘗試將池添加到OracleXADataSource,但沒有任何更改(已過時,但我認爲它仍然有效。我們沒有UCP罐子不幸的是,這樣我就可以不與測試)
<property name="connectionCachingEnabled" value="true"/> <property name="connectionCacheProperties"> <props merge="default"> <prop key="InitialLimit">1</prop> <prop key="MinLimit">1</prop> <prop key="MaxLimit">1</prop> </props> </property>