1C/Слишком много открытых файлов

Материал из ALT Linux Wiki
< 1C
Примечание: Короткая ссылка сюда - http://www.altlinux.org/1climits


Устраняем ошибку «Слишком много открытых файлов» или «Too many open files» в 1С под ОС Linux

Подробнее об ошибке

Пример полного текста ошибки:

Ошибка при выполнении файловой операции … Слишком много открытых файлов.

1c manyfiles error 1.png

Configuration repository operation failed.
по причине:
Error reading file from the file storage
По причине:
File operation error……: Too many open files

1c manyfiles error 2.jpg

Описание

Данная ошибка связана с тем, что ОС Linux исчерпала ограниченный ей лимит файлов на открытие и может возникать как при работе пользователя в пользовательском режиме, так и при работе разработчика с хранилищем конфигурации.

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

Unable to open files

1c manyfiles error 3.png

Решение

На всех серверах 1С выполним следующие настройки лимитов открываемых файлов.

Увеличиваем лимит на открытые файлы всей системы.

1. Получим значение количества файлов, которые можно открыть в нашей файловой системе:

# cat /proc/sys/fs/file-max

Скорее всего, здесь мы увидим числа порядка: 97822; 65208 и т.д.

Такие пределы нас вполне устраивают.

Данное значение используем в дальнейшей настройке.

Но, если понадобится их увеличить – добавим строку настроек в конфигурационный файл /etc/sysctl.conf любым удобным способом:

# echo "fs.file-max = 65000" >>/etc/sysctl.conf

2. Перечитаем параметры:

# sysctl –p

где 65000 – это то число файлов, которое нам необходимо иметь возможность открывать в нашей файловой системе.

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

1. Отредактируем файл:

# mcedit /etc/security/limits.conf

Добавим строки:

usr1cv8 hard nofile 65000
 
usr1cv8 soft nofile 65000

2. Перечитаем параметры:

# sysctl –p

3. Убедимся, что изменения вступили в силу. Получим pid службы:

# ps -fu usr1cv8 | grep ragent

4. По номеру pid получим значение параметра «max open files»:

# cat /proc/pid/limits | grep open

Значение должно быть 65000.

1c manyfiles error 4.png

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

Результат данной настройки будет аналогичен предыдущему варианту.

1. Отредактируем настройки:

# systemctl edit srv1cv8

Добавим строки:

[Service]
 
LimitNOFILE=65000
 
LimitNOFILESoft=65000

2. Обновим конфигурацию демон:

# systemctl daemon-reload

3. Перезапустим службу:

# systemctl restart srv1cv8

Отметим также, что помимо настроек, относящихся к количеству открытых файлов – может понадобится обратить внимание на настройки максимального числа сегментов разделяемой памяти для всей системы.

Увеличиваем максимальное число сегментов разделяемой памяти для всей системы.

При необходимости — установим настройку:

# echo "kernel.shmmni = 65000" >> /etc/sysctl.conf
 
# sysctl -p

Проверим, что настройка установилась:

# cat /proc/sys/kernel/shmmni

Все наши модифицированные настройки можем увидеть в конфигурационном файле /etc/sysctl.conf:

$ cat /etc/sysctl.conf

1c manyfiles error 5.png

Источник