Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PERF_LINUX_HUGEPAGES_THP 1С:Предприятие и СУБД

Гайд 1С: Тюнинг параметров HugePages и Transparent Huge Pages в Linux для 1С

Обновлено: 26.08.2026 · Официальная документация ↗
  • Внезапные периодические микрозависания сервера СУБД PostgreSQL на несколько секунд.
  • Высокое потребление системного времени процессора (параметр %sys в утилите top или sar).
  • Высокие задержки выделения памяти демоном ядра khugepaged.
  • Утечки и фрагментация адресного пространства оперативной памяти.

1. Принудительное отключение Transparent Huge Pages (THP)

Механизм Transparent Huge Pages (THP) динамически объединяет стандартные 4 КБ страницы в 2 МБ блоки. Для баз данных со случайным доступом (PostgreSQL под 1С) это вызывает блокировки памяти при дефрагментации. THP должен быть отключен.

Добавьте параметры в строку загрузки ядра в /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="... transparent_hugepage=never"

Обновите GRUB и отключите в runtime:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
update-grub || grub2-mkconfig -o /boot/grub2/grub.cfg

2. Настройка статических HugePages под PostgreSQL

Статические страницы (HugePages) фиксируются в RAM и не вытесняются в своп, ускоряя трансляцию адресов TLB процессора.

Рассчитайте число страниц (например, для shared_buffers = 32GB при размере страницы 2MB потребуется 16384 страниц):

# /etc/sysctl.d/99-hugepages.conf
vm.nr_hugepages = 16800
vm.hugetlb_shm_group = 1001 # GID группы postgres

В postgresql.conf установите:

huge_pages = on # Либо 'try' для безопасной проверки
💡 Практика специалистов: После настройки vm.nr_hugepages обязательно настройте лимиты блокировки памяти (memlock) для пользователя postgres в /etc/security/limits.d/99-postgres.conf: postgres soft memlock unlimited.

Частые вопросы (FAQ)

Почему Transparent Huge Pages (THP) вреден для PostgreSQL и 1С?

Фоновый поток khugepaged пытается уплотнять страницы памяти во время активных транзакций, захватывая блокировки mmap_lock, что приводит к полной остановке процессов СУБД на время компактификации.

Как проверить, что Transparent Huge Pages действительно отключен?

Выполните: cat /sys/kernel/mm/transparent_hugepage/enabled. Квадратные скобки должны стоять на слове [never].

Что произойдет, если nr_hugepages выделено меньше, чем размер shared_buffers?

При параметре huge_pages = on служба PostgreSQL откажется запускаться с ошибкой нехватки разделяемой памяти. При huge_pages = try сервер откатится к стандартным 4KB страницам.

Нужно ли настраивать HugePages для сервера приложений 1С (rphost)?

Нет, рабочие процессы rphost создают множество короткоживущих потоков и структур с динамическим выделением памяти, для них используются стандартные 4 КБ страницы ОС.

Полезные материалы
Рекомендуем