Ошибка в логе "Too many open files"
Материал из BiTel WiKi
Версия от 08:15, 17 мая 2018; Stark (Обсуждение | вклад)
Для Linux:
1) Увеличить для пользователя количество разрешённых дескрипторов в /etc/security/limits.conf:
bill soft nofile 10000 bill hard nofile 10000где bill - имя пользователя, под которым работают приложения биллинга.
Для новых систем с systemd и mysql
Параметр выставляется так :
в/etc/systemd/system/ лежит файл mysql.service в секцию [Service] дописал LimitNOFILE=2048, далее systemctl daemon-reload systemctl restart mysql
Как узнать сколько файлов съел процесс
На примере mysql, узнаем код процесса, потом находим сколько файлов держит
[root@sql system]# ps -AF | grep mysql mysql 2110 1 6 876409 1168440 3 12:58 ? 00:00:54 /usr/libexec/mysqld --basedir=/usr root 2250 2001 0 53447 980 0 13:12 pts/1 00:00:00 grep --color=auto mysql [root@sql system]# ls -l /proc/2110/fd | wc 3619 39804 386327
процесс держит 3619 файлов.
2) Поправить в /etc/sysctl.conf:
fs.epoll.max_user_instances = 10000 fs.file-max = 70000
Первый параметр специфичен для java.nio сокетов. Перезагрузка параметров из sysctl.conf:
sysctl -p