Производительность WSO2 DAS медленно ухудшается

Мы используем 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, поскольку он слишком сильно отставал

Использование памяти. Сервер перезапускался в 15:00, 20:00 и 7:40 утра, потому что он слишком сильно отставал.


person Christian Morin    schedule 04.11.2016    source источник


Ответы (2)


Похоже, ваши настройки немного отличаются от рекомендаций DAS. Следуйте руководству по настройке производительности DAS и посмотрите, есть ли улучшения.

person Bee    schedule 05.11.2016
comment
Привет, спасибо за ваш ответ. Мы пробовали разные варианты в руководстве по настройке производительности, ни один из них, к сожалению, не изменился в поведении. Как уже говорилось, когда мы настроили параметры, как указано выше, мы, по крайней мере, продержались дольше, но все же такое же долгосрочное поведение. - person Christian Morin; 07.11.2016

В этом случае проверьте производительность записи в базу данных. Например, на некоторых серверах баз данных, когда в записях есть поля BLOB-объектов, при увеличении количества записей скорость вставки снижается (таблицы аналитики DAS используют поле BLOB-объектов для кодирования и хранения значений поля). Поэтому лучше всего профилировать операции с базой данных и посмотреть, действительно ли они медленные. И после этого вы можете захотеть выполнить специфические оптимизации СУБД, чтобы повысить производительность хранилища блогов.

Здоровья, Анджана.

person Anjana Fernando    schedule 07.11.2016
comment
Некоторая дополнительная информация. Мы проверили и пришли к выводу, что проблема заключается в обработке входящих событий. События не отображаются в приемнике нашего DAS, когда возникает проблема (без большой задержки). Кроме того, когда производительность ухудшилась, невозможно восстановиться без перезапуска. Независимо от того, обрабатывает ли он какие-либо события в течение дня, и мы удаляем все события из базы данных DAS, по-прежнему существует огромная задержка, прежде чем входящие события будут отображаться как полученные события. Дает ли это дополнительную подсказку? - person Christian Morin; 09.11.2017