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

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

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

1C-ULIMIT-DESCRIPTORS-ERR 1С:Предприятие и СУБД

1С: Превышен лимит открытых файлов в Linux (ulimit -n / Too many open files)

Обновлено: 21.08.2026 · Официальная документация ↗

Природа исчерпания файловых дескрипторов процессами 1С

Каждое активное клиентское подключение, фоновое задание, сетевое соединение с PostgreSQL, открытый файл журнала регистрации (.lgd / .lgf), файл временного хранилища и динамическая библиотека потребляют отдельный файловый дескриптор (File Descriptor, FD). В дистрибутивах Linux по умолчанию для пользователей действует жесткое ограничение: ulimit -n 1024. Когда суммарное количество открытых сокетов и файлов рабочим процессом rphost или диспетчером rmngr достигает 1024, ядро Linux блокирует создание новых дескрипторов с ошибкой «EMFILE: Too many open files» или «Ошибка открытия файла блокировок / базы данных».

Бизнес-риски

Массовый аварийный сброс пользовательских сессий, повреждение файлов журнала регистрации 1Cv8.lgd, зависание кластера 1С, отказы при попытке подключиться к базе новых сотрудников.

Рекомендуемые значения лимитов дескрипторов для 1С:Предприятие

Параметр ядра / сервисаДефолт ОСРекомендуемое значение для Enterprise 1C
nofile (usr1cv8 soft limit)1 02465 536
nofile (usr1cv8 hard limit)4 096131 072 (или 262 144)
fs.file-max (системный лимит ядра)~200 0002 097 152
LimitNOFILE (systemd unit)1 024 / 4 09665536:131072 (или infinity)

Регламент увеличения лимитов файловых дескрипторов в Linux

Сценарий 1: Конфигурация /etc/security/limits.conf

Настройте лимиты на уровне PAM-модуля безопасности для служебного пользователя usr1cv8:

# Добавьте в конец файла /etc/security/limits.conf:
sudo bash -c 'cat << EOF >> /etc/security/limits.conf
usr1cv8          soft    nofile          65536
usr1cv8          hard    nofile          131072
usr1cv8          soft    nproc           32768
usr1cv8          hard    nproc           65536
EOF'

# Примените глобальный лимит открытых файлов для ядра Linux:
sudo sysctl -w fs.file-max=2097152
echo "fs.file-max = 2097152" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Сценарий 2: Переопределение LimitNOFILE в службе systemd

Демоны, запускаемые через systemd, игнорируют limits.conf и подчиняются директивам unit-файлов:

# Создание drop-in конфигурации для службы 1С
sudo mkdir -p /etc/systemd/system/srv1cv83.service.d/
sudo bash -c 'cat << EOF > /etc/systemd/system/srv1cv83.service.d/limits.conf
[Service]
LimitNOFILE=131072
LimitNPROC=65536
EOF'

# Перезагрузка systemd и рестарт кластера 1С:
sudo systemctl daemon-reload
sudo systemctl restart srv1cv83

Сценарий 3: Инструментальный контроль текущих лимитов запущенных процессов

# Проверка реальных лимитов у живого процесса rphost:
PID=$(pgrep rphost | head -n 1)
cat /proc/$PID/limits | grep "Max open files"
# Ожидаемый вывод:
# Max open files            65536                131072               files

# Подсчет текущего количества открытых дескрипторов:
ls -1 /proc/$PID/fd | wc -l

Типовые ошибки администраторов

  • Настройка limits.conf без изменения systemd unit: При перезагрузке сервера служба 1С стартует через systemd со старыми лимитами 1024, и при пиковой нагрузке сервер падает.
  • Установка бесконечного лимита (infinity) на старых ядрах: Может приводить к чрезмерному потреблению невыгружаемой памяти ядра (Slab / dentry cache).
Кластер 1С падает в часы пик или теряет соединения пользователей?
Инженеры ITSTM проведут комплексный тюнинг производительности Linux-серверов, настроят профили sysctl, memory overcommit и исключат исчерпание дескрипторов.
💡 Практика специалистов: Если на сервере 1С включен подробный Технологический Журнал (ТЖ) с записью сотен событий в секунду, каждый поток rphost непрерывно открывает и закрывает log-файлы. Настройте ротацию ТЖ и обязательно выделите для каталога логов ТЖ отдельный быстрый NVMe-диск.

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

Как быстро понять, что 1С упал именно из-за дескрипторов?

В системном журнале dmesg или /var/log/messages появится запись: 'VFS: file-max limit reached' или в технологическом журнале 1С запись с ошибкой EXCP 'Too many open files'.

Почему один процесс rphost открывает тысячи файлов?

Каждый пользовательский сеанс открывает соединения с базой, кэширует метаданные в каталоге tmp, держит сокеты IPC и пишет в технологический журнал.

Нужно ли увеличивать лимиты для пользователя postgres?

Да, для учетной записи postgres также необходимо установить nofile не менее 65536 в /etc/security/limits.conf и systemd unit postgresql.service.

Как влияет журнал регистрации (SQLite .lgd) на потребление дескрипторов?

Новый журнал регистрации SQLite держит открытыми файловые дескрипторы для основной базы lgd, WAL-журнала и shm-файлов shared memory на каждый активный сеанс.

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