2016-11-04 55 views
1

我們將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> 

可惜這種情況沒有幫助。任何提示或技巧,非常感謝。

Memory usage. Server was restarted at 3PM, 8PM and 7.40AM because it was lagging too far behind

內存使用情況。服務器在3PM,8PM和7.40AM重新啓動,因爲它落後得太遠。

回答

0

看起來您的設置與DAS建議有些不同。請按照DAS performance tuning guide,看看你是否有任何改進。

+0

嗨,謝謝你的回覆。我們已經嘗試過性能調整指南中的不同選項,但他們中的任何一個都不幸在行爲上有任何改變。如上所述,當我們調整上述選項時,我們至少「持續」更長時間 - 但仍然是長期行爲。 –

0

在這種情況下,請檢查數據庫寫入性能。例如,在某些數據庫服務器中,當記錄具有blob字段時,記錄數量增長時,插入速度變慢(DAS分析表使用blob字段來編碼和存儲字段值)。因此,最好對數據庫操作進行概要分析,看看這些操作是否真的很慢。之後,您可能希望執行DBMS特定的優化措施,以使博客存儲的性能更好。

乾杯, Anjana。

+0

一些進一步的信息。我們已經測試並得出結論,問題在於處理傳入的事件。當問題開始時(沒有很大的延遲),事件並不出現在我們DAS的接收器中。而且,如果性能下降,如果不重新啓動,就無法「恢復」。無論它處理一天中的任何事件,並且我們清除DAS數據庫中的所有事件,在傳入事件顯示爲接收事件之前,仍然有很大的滯後。這是否提供了進一步的線索? –