我們將DAS 3.1.0與我們從中發送事件的API Manager 1.10.0一起運行。事件在DAS的接收器中接收,發送到流,然後由執行計劃處理,並將結果發送給兩個發佈者,將數據發送到RDBMS。 DAS的活動數量約爲30-40次/秒。WSO2 DAS性能緩慢惡化
第一次啓動時,DAS能夠實時向RDBMS輸出事件,但我們可以非常緩慢地注意到它開始「落後」。大約一個小時後,「滯後」可能是15-30秒,幾個小時後,「滯後」大約在20分鐘後,4-5小時後,再也沒有處理過任何事件(我們可以看到它沒有此時將任何數據存儲在其傳入事件數據庫中)。
DAS仍在運行,結束時沒有任何錯誤日誌 - 但我們顯然希望它能夠實時輸出數據,而不是使用指數「回退」 - 乘法器,這似乎是案子。
在設置方面可以有任何補救措施嗎?不知何故,它可能是一個積累的記憶問題嗎? (附加一些內存使用的輸出)。我們可以看到內存開始積累隨着時間的推移,所以我們試圖改變JVM設置來優化:
-Xms3072m -Xmx3072m -XX:MaxPermSize=1024m -XX:NewSize=256m -XX:MaxNewSize=614m -XX:SurvivorRatio=10 -XX:-DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+AggressiveOpts -XX:+UseStringCache -XX:+OptimizeStringConcat
我們也試圖改變這使得它至少是「時間更持久」的一些性能設置,但仍得到相同的結果:
數據橋-config.xml中:
<workerThreads>3</workerThreads>
<maxEventBufferCapacity>1</maxEventBufferCapacity>
<eventBufferSize>2000</eventBufferSize>
<clientTimeoutMin>30</clientTimeoutMin>
數據劑-config.xml中:
<QueueSize>1024</QueueSize>
<BatchSize>100</BatchSize>
<CorePoolSize>2</CorePoolSize>
<SocketTimeoutMS>30000</SocketTimeoutMS>
<MaxPoolSize>2</MaxPoolSize>
<KeepAliveTimeInPool>20</KeepAliveTimeInPool>
<ReconnectionInterval>30</ReconnectionInterval>
<MaxTransportPoolSize>250</MaxTransportPoolSize>
<MaxIdleConnections>250</MaxIdleConnections>
<EvictionTimePeriod>5500</EvictionTimePeriod>
<MinIdleTimeInPool>5000</MinIdleTimeInPool>
<SecureMaxTransportPoolSize>250</SecureMaxTransportPoolSize>
<SecureMaxIdleConnections>250</SecureMaxIdleConnections>
<SecureEvictionTimePeriod>5500</SecureEvictionTimePeriod>
<SecureMinIdleTimeInPool>5000</SecureMinIdleTimeInPool>
分析事件匯-config.xml中:
<QueueSize>1024</QueueSize>
<maxQueueCapacity>1</maxQueueCapacity>
<maxBatchSize>128</maxBatchSize>
<WorkerPoolSize>5</WorkerPoolSize>
可惜這種情況沒有幫助。任何提示或技巧,非常感謝。
內存使用情況。服務器在3PM,8PM和7.40AM重新啓動,因爲它落後得太遠。
嗨,謝謝你的回覆。我們已經嘗試過性能調整指南中的不同選項,但他們中的任何一個都不幸在行爲上有任何改變。如上所述,當我們調整上述選項時,我們至少「持續」更長時間 - 但仍然是長期行爲。 –