我们与发送事件的API Manager 1.10.0一起运行DAS 3.1.0。事件在DAS的接收器中接收,发送到流,然后由执行计划处理,结果发送给两个发布者,将数据发送到RDBMS。 DAS的事件数量约为30-40事件/秒。
首次启动时,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>
哪个遗憾没有帮助。任何提示或提示都非常感谢。
内存使用情况。服务器在下午3点,晚上8点和早上7点半重新启动,因为它落后了太多。
答案 0 :(得分:0)
看起来您的设置与DAS建议略有不同。请关注DAS performance tuning guide,看看是否有任何改进。
答案 1 :(得分:0)
在这种情况下请检查数据库写入性能。例如,在某些数据库服务器中,当记录具有blob字段时,当记录数增加时,插入速度会变慢(DAS分析表使用blob字段来编码和存储字段值)。因此,最好对数据库操作进行分析,看看这些操作是否真的很慢。之后,您可能希望进行特定于DBMS的优化,以使博客存储的性能更佳。
干杯, 长香。