Всё больше компаний выбирают 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. Общие параметры
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) — журнал предзаписи, критически важный для отказоустойчивости.
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/syslog,journalctl)
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) могут потребоваться свои нюансы настройки . В сложных случаях привлекайте специалистов, имеющих опыт в администрировании аналогичных систем.