Конфигурация высоконагруженных систем

Материал из Юпитер-8

В случаях, когда СПИ "Юпитер-КРОС" должна обрабатывать информацию, приходящую от большого количества приборов(порядка 10000) необходимо внести изменения в настройку ОС, СУБД PostgreSQL и изменить ряд параметров в конфигурации smpo-server.

Операционная система

Для ведомственных подразделений рекомендуется использовать ОС Astra Linux Smolensk 1.7
Указанные здесь настройки применимы для ОС семейства Linux:

  • Для повышения стабильности обработки сетевых обращений рекомендуется внести следующие изменения в файл /etc/sysctl.conf
fs.file-max = 1000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.udp_mem = 8388608 12582912 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
vm.swappiness=5
vm.vfs_cache_pressure = 1000
  • После внесения изменений необходимо, выполнить команду, которая позволит ядру ОС пересчитать новые параметры
sudo sysctl -p

СУБД PostgreSQL

В связи с тем, что СУБД PostgreSQL 9.6 поддерживается только в ОС Astra Linux Smolensk 1.6, а версии 10 и 11 более не поддерживаются, в ОС Astra Linux Smolensk 1.7 рекомендуется подключить или скачать образ расширенного репозитория ОС и установить СУБД PostgreSQL 14. Так как комплекс работает с большим количеством данных, рекомендуется использовать отдельный диск для работы СУБД.
Данные рекомендации основываются на имперических исследованиях и проверены на типовых конфигурациях АРМ тип 2 и серверных решениях. В качестве платформ использовались компьютеры со следующей конфигурацией:
- процессор Intel® Core i5-11400 @ 2.6GHz
- ОЗУ 32 GB
- SSD 180 GB - Операционная система AstraLinux Smolensk 1.7 Update 5
- SSD 250 GB - кластер базы данных. Диск смонтирован в /mnt/postgresql
- SATA 1TB - резервные копии баз данных, логирование работы КРОС, пакеты для установки ПО. Диск смонтирован в /mnt/hdd
- Эмулятор работы приборов - 10000 приборов

Создание нового кластера PostgreSQL

Перед началом, необходимо остановить работу СУБД:

sudo systemctl stop postgresql

1. Для переноса кластера можно воспользоваться копированием/переносом данных из /var/lib/postgresql/14/main в /mnt/postgresql/14/main.

  • Скорее всего при копировании/переносе данных изменится владелец, поэтому необходимо его сменить:
sudo chown -R postgres:postgres /mnt/postgresql
  • Так же,возможно придётся изменить права:
sudo chmod -R 700 /mnt/postgresql

2. Можно создать новый кластер:

sudo -u postgres initdb --locale ru_RU.UTF-8 -E UTF8 -D '/mnt/postgresql/14/main'

Изменение конфигурации

После установки СУБД необходимо внести ряд изменений в файл /etc/postgresql/14/main/postgresql.conf