Flexberry / NewPlatform.Flexberry.ServiceBus

Flexberry Service Bus - Runtime service
MIT License
3 stars 4 forks source link

Сборщик статистики из RMQ потребляет много памяти #71

Open BatNiy opened 5 years ago

BatNiy commented 5 years ago

Описание ошибки

Модуль NewPlatform.Flexberry.ServiceBus.Components.StatisticsService.RmqStatisticsCollector со временем начинает потреблять много ресурсов.

Шаги воспроизведения

Запустить сервис шины, ждать. Для ускорения процесса можно поставить свойство Interval в значение OneSecond (за минут 15 набралось на 4 Гб).

Конфигурация

Стандартная конфигурация шины для RMQ.

Пути решения

В классе периодически запускается GetWatchedQueues(), который для каждой подписки из шины достаёт статистику соответствующей очереди в RMQ. Если сбор данных всех очередей длится больше чем периодичность вызова метода, копятся Task'и. Предлагается не вызывать метод, пока не выполнилась предыдущая итерация. Также можно оптимизировать время работы метода, путём одного вызова получения данных всех подписок (вместо вызова получения данных конкретной очереди).

Исходный код

Проект на GitHub: NewPlatform.Flexberry.ServiceBus Ветка: develop

Примерная оценка трудоёмкости

3 часа.

BatNiy commented 5 years ago

Подумав, понял, что "не вызывать метод, пока не выполнилась предыдущая итерация", приведёт к тому, что статистика будет запаздывать. Видимо, механизм периодичного вызова, нужно оставить тем же. Ну или переделать формат хранения статистики :|