WSO2 DAS производительность медленно ухудшается
Мы запускаем DAS 3.1.0 вместе с нашим API Manager 1.10.0, откуда мы отправляем события. События принимаются в приемнике в DAS, отправляются в поток, затем обрабатываются планом выполнения, а результат отправляется двум издателям, отправляя данные в СУБД. Количество событий для DAS составляет около 30-40 событий в секунду.
При первом запуске DAS может выводить события в СУБД в режиме реального времени, но мы можем заметить, что он очень медленно начинает "отставать". Примерно через час "отставание" составляет, возможно, 15–30 секунд, через несколько часов "отставание" отстает примерно на 20 минут, а через 4–5 часов события больше не обрабатываются (мы видим, что это не так. сохраните любые данные в своей базе данных входящих событий на данный момент).
DAS все еще работает, и, наконец, нигде нет журналов ошибок, но мы, очевидно, хотим, чтобы он продолжал выводить данные в режиме реального времени, а не с экспоненциальным умножителем "back-off", который, кажется, имеет место.
Может ли быть какое-то средство для этого с точки зрения настроек? Может ли это быть проблемой накопления памяти? (приложив некоторые выводы использования памяти). Мы видим, что память начинает накапливаться со временем, поэтому мы попытались изменить настройки 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>
Data-агент-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.40, потому что он слишком сильно отставал.
2 ответа
Похоже, ваши настройки немного отличаются от рекомендаций DAS. Пожалуйста, следуйте руководству по настройке производительности DAS и посмотрите, есть ли у вас какие-либо улучшения.
Пожалуйста, проверьте производительность записи базы данных в этом случае. Например, на некоторых серверах баз данных, когда записи имеют поля больших двоичных объектов, когда количество записей увеличивается, скорость вставки уменьшается (таблицы аналитики DAS используют поле больших двоичных объектов для кодирования и хранения значений полей). Поэтому лучше всего профилировать операции с базой данных и посмотреть, действительно ли они выполняются медленно. И после этого вы можете захотеть выполнить специальные настройки СУБД, чтобы повысить производительность хранилища блогов.
Ура, Анжана.