Тонкая настройка Linux-сервера для 1С: повышаем производительность

Всё больше компаний выбирают Linux в качестве платформы для серверов 1С. Причины очевидны: экономия на лицензиях, высокая стабильность, гибкость настройки и соответствие требованиям импортозамещения (Astra Linux, ALT Linux и другие российские ОС) . Однако перенос инфраструктуры с Windows на Linux — только первый шаг. Чтобы система работала быстро и без сбоев, необходима тонкая настройка всех компонентов: операционной системы, СУБД PostgreSQL и самого сервера 1С.

В этой статье я собрал практические рекомендации по настройке Linux-сервера для максимальной производительности 1С. Материал основан на официальной документации фирмы «1С», Postgres Pro и опыте внедрений.


1. Подготовка оборудования и операционной системы

Прежде чем приступать к настройке, убедитесь, что серверное оборудование соответствует нагрузке. Для корректной работы 1С и PostgreSQL требуются :

КомпонентРекомендации
ПроцессорОт 8 ядер (Xeon, EPYC). Важна высокая тактовая частота на ядро — 1С плохо масштабируется на множество медленных ядер.
Оперативная памятьОт 32 ГБ (рекомендуется 64–128 ГБ для 20+ пользователей).
Дисковая подсистемаSSD / NVMe, RAID 10 с высоким IOPS.
Сеть1 Гбит/с и выше, желательно два интерфейса.

1.1. Отключение энергосбережения и HyperThreading

Для достижения максимальной производительности и стабильности работы PostgreSQL необходимо отключить:

  • HyperThreading — может создавать непредсказуемую нагрузку и снижать предсказуемость производительности .
  • Энергосбережение (Energy Saving) — в противном случае могут непредсказуемо вырастать задержки ответов базы данных .

В Linux эти параметры настраиваются через BIOS сервера, а также через настройки планировщика процессора (например, использование performance governor).

1.2. Запрет своппинга разделяемой памяти

PostgreSQL активно использует разделяемую память. Необходимо запретить её своппинг. В системах Linux это настраивается параметром ядра :

bash

# Проверка текущего значения
sysctl vm.swappiness

# Рекомендуется установить близкое к 0
vm.swappiness = 1

Также для FreeBSD (актуально для некоторых дистрибутивов) требуется установить kern.ipc.shm_use_phys=1.

1.3. Настройка лимитов операционной системы

Сервер 1С и PostgreSQL открывают большое количество файлов и соединений. Необходимо увеличить лимиты в файле /etc/security/limits.conf :

text

usr1cv8 soft core unlimited
usr1cv8 hard core unlimited
usr1cv8 soft nofile 65536
usr1cv8 hard nofile 65536
postgres soft nofile 65536
postgres hard nofile 65536

Для применения изменений может потребоваться перезагрузка или перезапуск служб.


2. Тонкая настройка PostgreSQL

PostgreSQL — наиболее распространённая СУБД для 1С в среде Linux. Основные параметры производительности задаются в файле postgresql.conf (обычно расположен в директории данных кластера, например /var/lib/postgresql/14/main/postgresql.conf).

2.1. Общие параметры

ПараметрРекомендуемое значениеПояснение
max_connections500–10001С может открывать много соединений. Рекомендуется разрешить не менее 500 .
shared_buffers25–30% от RAMКэш страниц PostgreSQL. Слишком большое значение может конкурировать с кэшем ОС .
effective_cache_size50–75% от RAMПодсказка оптимизатору о размере кэша ОС .
work_memRAM / 32…64 (от 32 до 256 MB)Память для сортировки и хэш-таблиц в одном запросе. Завышение приведёт к избыточному потреблению памяти .
maintenance_work_memRAM / 16…32 (от 256 MB до 4 GB)Память для VACUUM, CREATE INDEX .
temp_buffers32–256 MBБуфер для временных таблиц. 1С активно использует временные таблицы .

2.2. Настройки, критически важные для 1С

ini

# Отключение экранирования строк (требование 1С)
standard_conforming_strings = off
escape_string_warning = off

# Блокировки - для работы с большим количеством временных таблиц
max_locks_per_transaction = 256

# Отключение SSL для снижения нагрузки на CPU
ssl = off

2.3. Настройки WAL и контрольных точек

WAL (Write Ahead Log) — журнал предзаписи, критически важный для отказоустойчивости.

ПараметрРекомендуемое значениеПояснение
fsynconОтключение опасно потерей данных при сбое питания .
synchronous_commitoffРиск потери последних транзакций (менее 1 сек), но значительный прирост производительности .
checkpoint_completion_target0.5–0.9«Размазывание» контрольной точки по времени .
min_wal_size / max_wal_size512MB / 2GB (для версий 9.5+)Управление объёмом WAL-файлов .

2.4. Настройка автовакуума

Автовакуум необходим для борьбы с фрагментацией и разрастанием таблиц. Отключать его категорически не рекомендуется .

ini

autovacuum = on
autovacuum_max_workers = (CPU cores / 4) … 2, но не менее 4
autovacuum_naptime = 20s

2.5. Вынос временных файлов на RAM-диск (tmpfs)

PostgreSQL интенсивно создаёт временные файлы. Их вынос на RAM-диск может значительно ускорить работу .

sql

-- Создание табличного пространства в tmpfs
CREATE TABLESPACE temp_space LOCATION '/dev/shm/postgres_temp';

-- Установка как временного табличного пространства
ALTER SYSTEM SET temp_tablespaces = 'temp_space';

Важно: данные в RAM-диске теряются при перезагрузке, но для временных таблиц это допустимо.

2.6. Оптимизация планировщика через plantuner

Для улучшения планирования запросов с недавно созданными пустыми таблицами рекомендуется использовать расширение plantuner :

ini

shared_preload_libraries = 'plantuner'
plantuner.fix_empty_table = 'on'

2.7. Борьба с фрагментацией: pgcompacttable

Для уменьшения размера раздутых таблиц и индексов без длительных блокировок используйте утилиту pgcompacttable :

bash

# Установка зависимостей
apt-get install libdbi-perl libdbd-pg-perl  # Debian/Ubuntu
yum install perl-DBI perl-DBD-Pg            # RHEL/CentOS

# Установка расширения pgstattuple в БД
CREATE EXTENSION IF NOT EXISTS pgstattuple;

# Компактизация всех раздутых таблиц
pgcompacttable --all --verbose

3. Настройка сервера 1С:Предприятия

3.1. Установка платформы

Установка серверной части 1С на Linux выполняется из пакетов :

bash

# Debian/Ubuntu (Astra Linux)
sudo dpkg -i 1c-enterprise83-server_8.3.*.deb

# RHEL/ALT Linux
rpm -ivh 1c-enterprise83-server-8.3.*.rpm

Установщик создаёт пользователя usr1cv8, от имени которого работают процессы сервера.

3.2. Настройка кластера серверов

Основные параметры кластера настраиваются через консоль администрирования 1С :

ПараметрРекомендация
Назначение использования памяти70–80% физической RAM сервера
Количество рабочих процессовНа каждые 4 ядра процессора — 1 рабочий процесс
Вспомогательные процессыУвеличить при работе с большими базами (50+ ГБ)

3.3. Конфигурация сервера для высоких нагрузок

В файле конфигурации сервера 1С (обычно /etc/init.d/srv1cv83 или настройки в systemd) рекомендуется установить:

  • Лимит открытых файлов
  • Переменные окружения для работы с СУБД

Для работы с PostgreSQL необходимо добавить в профиль пользователя usr1cv8 :

bash

echo ". /home/postgres/sqllib/db2profile" >> /home/usr1cv8/.profile   # Для DB2
# Для PostgreSQL обычно достаточно переменных окружения
export PGHOST=localhost
export PGPORT=5432

3.4. Настройка потоков сетевого взаимодействия

Для высоконагруженных систем имеет смысл настроить параметры потоков в конфигурации сервера :

yaml

# Пример настройки (актуально для сервера 1С:Шина, но принципы общие)
threads:
  acceptor-thread-count: 1        # Потоки приёма подключений
  selector-thread-count: 10       # Потоки приёма сетевых запросов
  worker-thread-count: 32         # Потоки обработки запросов

4. Мониторинг и диагностика производительности

4.1. Сбор статистики через vmstat

Для выявления узких мест необходимо настроить постоянный сбор информации о загруженности оборудования :

bash

# Сбор статистики каждые 15 секунд в течение 2 часов
vmstat -n 15 480 > StatResult.txt

Ключевые показатели и их интерпретация :

ПоказательКритерийПроблема при превышении
si (swap in)среднее ≈0, макс. не более 20Недостаточно оперативной памяти
us (user)макс. не более 70Недостаточная производительность CPU
sy (system)макс. не более 35Высокая нагрузка на ядро
r (run queue)не более 2 × количество ядерНедостаточная производительность CPU
b (blocked)не более 2 × количество дисковНедостаточная производительность дисков

4.2. Мониторинг сетевой загрузки

Для анализа загруженности сети используйте утилиту PktStat (требует root) :

bash

pktstat -T -B -n 480 -i eth0

Критерий: максимальная скорость передачи не должна превышать 65% пропускной способности сетевого адаптера .

4.3. Анализ логов

При возникновении проблем необходимо анализировать:

  • Логи PostgreSQL (/var/log/postgresql/postgresql-*.log)
  • Технологический журнал 1С (настраивается отдельно)
  • Системные логи (/var/log/syslogjournalctl)

5. Чек-лист: что проверить после настройки

КомпонентЧто проверить
ОСОтключены HyperThreading и энергосбережение, настроены лимиты в limits.conf, запрещён своппинг
PostgreSQLПараметры shared_buffers, work_mem, эффективный кэш; включён автовакуум; отключён standard_conforming_strings
Сервер 1СЗапущен и добавлен в автозагрузку; настроены рабочие процессы кластера; есть доступ к СУБД
МониторингНастроен сбор vmstat; настроен технологический журнал 1С; настроены уведомления о критических событиях

Заключение

Перенос сервера 1С на Linux — это не только переход на импортонезависимую платформу, но и возможность получить более предсказуемую и производительную инфраструктуру при грамотной настройке. Ключевые точки оптимизации:

  • Отключение энергосбережения и HyperThreading на уровне BIOS/ОС
  • Правильный расчёт параметров PostgreSQL: shared_buffers (25–30% RAM), work_mem (RAM/32), эффективный кэш (50–75% RAM)
  • Специфичные для 1С настройки СУБД: отключение standard_conforming_strings, увеличение max_locks_per_transaction
  • Вынос временных файлов на tmpfs для ускорения работы с временными таблицами
  • Регулярный мониторинг через vmstat и технологический журнал для своевременного выявления узких мест

Если вы только планируете переход на Linux, начните с тестового стенда. Проведите нагрузочное тестирование, замерьте производительность до и после настройки. И помните: для каждого дистрибутива (Astra Linux, ALT Linux, Ubuntu Server) могут потребоваться свои нюансы настройки . В сложных случаях привлекайте специалистов, имеющих опыт в администрировании аналогичных систем.