|
На серверах Alfresco периодически можно наблюдать ошибку “открыто слишком много файлов” (в английской версии: Too many open files). В главном журнале событий - файле catalina.out указанная ошибка может выглядеть следующим образом:
1 2 3 | SEVERE: Socket accept failed java.net.SocketException: Too many open files at java.net.PlainSocketImpl.socketAccept(Native Method)at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) |
Ошибка приводит к невозможности создания новых документов в СЭД Alfresco и появлению разных других ошибок при доступе к ресурсам системы.
Для устранения ошибки мы выполним ряд простых шагов.
1. Установим мягкое и жесткое ограничения на открытие файлов для учетной записи, которая используется для запуска Alfresco:
1 2 | echo "alfresco soft nofile 8192" | sudo tee -a /etc/security/limits.conf echo "alfresco hard nofile 65536" | sudo tee -a /etc/security/limits.conf |
Кстати, первое число, при желании, можно также установить 65536.
2. выполнима настройку системы PAM, подключив необходимый модуль.
1 2 | echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/common-session echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/common-session-noninteractive |
pam_limits.so: накладывает ограничения на пользователей и группы, в соответствии с файлом /etc/security/limits.conf.
Далее как в тома анекдоте: “если и это не помогло…”.
В ход идет тяжелая артиллерия, а именно утилита unlim.
ulimit – устанавливает ограничения текущего процесса, например количество одновременно открытых файлов.
Для общей информации можно посмотреть количество файлов, открытие которых изначально установленно системой. Для этого нужно выполнить команду:
cat /proc/sys/fs/file-max |
Чтобы увидеть реально число разрешенных к отрытию файлов используем команду:
ulimit -a |
Результат может быть примерно следующим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 124612 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 16384 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 124612 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited |
Теперь, для увеличения числа открытых файлов воспользуемся командой:
ulimit -n 65536 |
Теперь делаем повторный запрос числа октрых файлов:
ulimit -a |
И видим вот такой результат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 124612 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65536 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 124612 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited |
Что особенно хорошо, так это то, что перезагрузка сервера или самой Alfresco не требуется. СЭД Alfresco тут же продолжает работу в штатном режиме. Необходимо лишь перезагрузить веб-страницу и ошибка исчезает.
Вы также можете ознакомиться с другими статьями:
6th Июл 2017
|
Теги:
|