Публичное пространство
Оптимизация коннектов к базе данных на SetCentrum
- SRTE-3147Получение подробных данных проблемы… СТАТУС
Перед большими праздниками могут массово прогрузить новые рекламные акции в систему, так и другие данные, но кассы могут в этот момент быть не в сети - например, была отключена на ночь. Из-за этого могут скопиться большие очереди из данных и сервер может быть перегружен.
1. Убедитесь в наличии больших очередей в таблицах.
Скрипт для проверки количества заданий | Назначение |
---|---|
| Количество сообщений (части товарного справочника) для отправки в Товарный техпроцесс (GoodsCatalogERI). |
select count(*) from cash_cash_event; | Количество событий, создаваемых модулем SET-Cash (новая касса, касса удалена, касса обновлена, и.т.п.), которые могут быть обработаны другими модулями, подписанными на события SET-Cash в реестре модулей. |
select count(*) from discounts_file_for_cashes; | Количество файлов - каталогов карт, которые могут быть считаны кассами (AdvertiseActionForCashesEntity). |
select count(*) from discounts_file_for_shop; | Количество файлов с рекламными акциями, переданными из центрального офиса в магазин (AdvertiseActionForShopEntity). |
select count(*) from un_cg_product_file_for_cashes; | Количество ссылок на файлы - части товарного справочника для отправки на кассы (ProductForCashesEntity) |
select count(*) from un_cg_product_file_for_shops; | Количество ссылок на файлы - части товарного справочника для отправки на магазины (ProductForShopEntity) |
select count(*) from file_transfer_cashier_data_type; | Количество заданий на передачу данных типа FILE_TRANSFER_CASHIER_DATA_TYPE |
select count(*) from file_transfer_properties; | Количество заданий на передачу данных типа FILE_TRANSFER_CASH_FILES. |
2. Следующим этапом проверьте количество коннектов.
SELECT sum(numbackends) FROM pg_stat_database;
SELECT datname, numbackends FROM pg_stat_database order by numbackends desc;
SELECT * FROM pg_stat_activity where state <> 'idle' order by datname, xact_start;
SELECT * FROM pg_stat_activity where state = 'idle' and application_name = 'Set10' order by datname;
SELECT * FROM pg_stat_activity order by application_name, datname;
3. Проверьте количество выделенных коннектов для баз данных: set, set_loyal, set_operday в настройках конфигурационного файла JBoss:
- Linux: /var/lib/jboss/standalone/configuration/standalone.xml
- Windows: {Disk}:\{Папка сервера SetRetail}\standalone\configuration\standalone.xml
Количество коннектов для каждой базы данных указано в параметре <max-pool-size>...</max-pool-size>
.
4. Посчитайте общую сумму коннектов к базам данных.
В нашем примере:
- set = 60
- set_loyal = 20
- set_operday = 20
- Итого = 100.
5. C помощью запросов из пункта 2, проверьте доступные коннекты.
Например, можно увидеть, что большое количество коннектов с статусе idle
= 1533шт.
6. Следующий шаг, проверьте количество СУБД PostgreSQL.
- Windows: {Диск}:\{Папка с данными СУБД}\data\postgresql.conf
- Linux: \var\lib\pgsql\{папка с текущей версией PostgreSQL}\data\postgresql.conf
Проверьте коннекты в параметрах:
- max_connections
- max_prepared_transactions
Количество доступных коннектов в параметре max_connections
и max_prepared_transactions
в postgresql.conf относительно standalone.xml не должно быть совокупно количеству больше, чем выделено в postgresql.conf, +20 коннектов дополнительно для технических нужд. То есть количество коннектов в СУБД не должно превышать количество коннектов на сервере JBoss
В данном случае видно, что количества = 110 явно недостаточно для обработки такого количества запросов.
7. Резюме:
Для установки нормального количества коннектов нужно изменить следующие параметры
Значение max_prepared_transactions
всегда должно быть практически равно значению max_connections
.
- postgresql.conf
max_connections
= 2030max_prepared_transactions
= 2030
- В standalone.conf:
- max-pool-size:
- set = 1000
- set_loyal = 500
- set_operday = 500
- Итого: 2000шт.
- Количество коннектов для http-полкючения в параметре
max-connections
понизить на 10-20% ниже общей суммы вmax-pool-size
.
- max-pool-size:
© 1994-2023, ООО «Кристалл Сервис Интеграция».
Все права защищены..