Допустимая нагрузка на отчетную систему и ее ограничение

Добрый день.
Мы начали использовать систему на базе Cuba platform с установленным модулем отчетности Reporting.
Подскажите пожалуйста, какого объема отчеты возможно формировать в системе?
Например, нам необходимы отчеты по 300-500тыс строк в excel, но при запуске таких отчетов система зависает.
Какие характеристики сервера рекомендуете (память, CPU)? У нас на Tomcat выделено до 4Гб памяти.
Возможно ли ограничить нагрузку по сессиям/потокам? Т.к. при запуске тяжелого отчета бывает невозможно просто подключиться к системе другим пользователям.

Добрый день,

Объем отчетов лимитирован размером кучи (heap size) JVM и производительностью серверов: приложения и БД.

Если вы генерируете большие отчеты, это неизбежно создает в Java-процессе большую нагрузку на подсистему памяти: много объектов создается, а потом очищается сборщиком мусора.

4 Гб это мало, по моему опыту это потянет на 50-100 тыс. строк xlsx отчета.
Я бы посоветовал вам выделить 16 Гб.
По CPU - выполнение отчета занимает один поток процессора, тут добавление ядер не поможет.

Кроме того, если хотите более точно отследить использование серверных ресурсов и планировать апгрейд, то вам нужно настроить мониторинг сервера и показателей Java-процесса, чтобы собирались показатели: CPU time, OS process memory usage, Java Heap max/used/free.
Например инструменты мониторинга Zabbix или Grafana.

Нагрузку по сессиям/потокам ограничить нельзя, в виртуальной машине Java подсистема памяти и сборка мусора работают глобально на весь процесс.

Если хотите, чтобы тяжелые отчеты совсем не влияли на повседневную работу пользователей, то вам придется развернуть кластер, хотя бы два сервера Tomcat, с разными адресами.

Все отчеты должны запускаться на одном сервере, и именно там должно быть 16 Гб памяти.
А пользователи будут работать на втором сервере. Тогда взаимное влияние будет только на уровне сервера БД.
На втором сервере можно даже как-нибудь через application properties совсем скрывать экран или кнопки по запуску отчетов, чтобы никто ненароком не запустил.

Это реальный опыт, у нас был проект, где выполнение отчетов было вынесено в отдельный tomcat.

Но для начала попробуйте увеличить память до 8-16 Гб, и может быть проблема отпадет.

4 симпатии