Изменить механизм сохранения результатов опроса

Сейчас результаты опросов сохраняются последовательно. При попытке опросить часовые данные с 654 счётчиков за период 23.12.24 - 13.01.24 полностью поломал процедуру сохранения результатов опроса. Данные не успевают сохраниться за 30 минут(выставленных в параметрах по умолчанию), и получается бесконечный цикл. Никакие результаты опросов не могут сохраниться, все опросы заканчиваются сообщением “Вышел таймаут на остановку опроса.”.
При этом нагрузка на сервер не превышает 10% на цпу, озу, бд.

Не совсем так. Они ставятся в очередь на сохранения и “разбираются” 4 параллельными потоками. Судя по тому, что у вас загрузка ЦП не превышает 10 процентов, это значение можно увеличить, что значительно ускорит сохранение.

Для этого в compose.yml для сервиса lers задайте значение переменной среды LERS_SERVER_Modules__Poll__SavePollDataHandlersCount

По умолчанию значение 4. Установите, например, в 8 или 10. Можете поэкспериментировать и увеличивать до того, пока нагрузка на сервер при сохранении не станет достаточно высокой, но всё ещё приемлемой.

понял, спасибо

Сделал 24(половина ядер), не помогло. Сеансы опроса висят на строке Сессия опроса завершена. Результат: None.

Помогите пожалуйста разобраться, журналы проблемных опросов отправил на support@lers.ru

Так же отправил параметры для доступа к серверу, если потребуется.

Сохранение данных по каждому подключению занимает ~20 минут. В это время заблокированы все остальные опросы.

Результат опроса не успевает сохраниться за полтора часа…
Журнал опроса.xlsx (83,0 КБ)

убрал расчёт на квартирныз точках, теперь опросы стабильно успеватют завершиться за 40 минут. Но это слишком много, надо как-то оптимизировать процедуру расчёта и сохранения.

Тоже иногда возникает такая проблема. Пока выставил повыше LERS_SERVER_Modules__Poll__SavePollDataHandlersCount, но не уверен что это поможет.

Возможно проблема связана с ошибкой пересчёта потребления и показаний? при попытке принудительного пересчёта получаю ошибку value null по всем точкам.

Доступ есть, а как воспроизвести? Что можно опросить, чтобы увидеть такое длительное сохранение?

Фонтанки 76 поквартирный учёт

LERS_SERVER_Modules__Poll__SavePollDataHandlersCount
решило проблему с блокировкой других опросов. Время сохранения результатов по указанным ранее опросам всё ещё огромное.

Похоже, что большой проблемой является сохранение архива событий. Таблица довольно большая и выборка из неё выполняется очень долго именно на стороне Postgres. Для остальных данных мы делали дополнительные таблицы для оптимизации, но именно для опроса и сохранения архива событий выполняется сложный запрос, соединяющий несколько больших таблиц.

Можете ли вы уменьшить срок хранения архива событий? Сейчас он у вас хранится 24 месяца. Может, сократить его хотя бы до полугода?

Если это не вариант, можно использовать Table Partitioning.

Фактически, таблица будет разделена на несколько файловых групп по какому-либо критерию. Можно, например, данные за 2000-2024 годы хранить в одной секции, а данные за 2025 в другой. Это сильно увеличит скорость сохранения, так как выборка будет вестись из секции, где хранятся данные только за 2025й. Через год секционирование можно повторить и отправить старые данные в такой “архив”.

Есть ли возможность попробовать один из этих вариантов?

А не приведет ли это к проблеме при последующем обновлении ЛЭРС УЧЕТ?

Не вижу причин почему могут быть проблемы. Структура таблицы от этого меняется, только способ хранения на диске.