Мы используем DAS 3.1.0 вместе с нашим API Manager 1.10.0, откуда мы отправляем события. События поступают в приемник в DAS, отправляются в поток, затем обрабатываются планом выполнения, а результат отправляется двум издателям, отправляя данные в РСУБД. Количество событий в DAS составляет около 30-40 событий в секунду.
При первом запуске DAS может выводить события в СУБД в режиме реального времени, но мы можем заметить, что он очень медленно начинает «отставать». Примерно через час "задержка" может составлять 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
Мы также попытались изменить некоторые настройки производительности, что сделало его как минимум «длительным», но результат тот же:
Data-bridge-config.xml:
<workerThreads>3</workerThreads>
<maxEventBufferCapacity>1</maxEventBufferCapacity>
<eventBufferSize>2000</eventBufferSize>
<clientTimeoutMin>30</clientTimeoutMin>
Data-agent-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>
Analytics-event-sink-config.xml:
<QueueSize>1024</QueueSize>
<maxQueueCapacity>1</maxQueueCapacity>
<maxBatchSize>128</maxBatchSize>
<WorkerPoolSize>5</WorkerPoolSize>
Что, к сожалению, не помогло. Любые подсказки или советы очень ценятся.
Использование памяти. Сервер перезапускался в 15:00, 20:00 и 7:40 утра, потому что он слишком сильно отставал.