Ошибка в логе "Too many open files"
Материал из BiTel WiKi
(Различия между версиями)
Stark (Обсуждение | вклад) |
Stark (Обсуждение | вклад) |
||
Строка 20: | Строка 20: | ||
[https://www.linux.org.ru/forum/general/11588824?cid=11589383 linux.org.ru] | [https://www.linux.org.ru/forum/general/11588824?cid=11589383 linux.org.ru] | ||
+ | |||
+ | == Как узнать сколько файлов съел процесс== | ||
+ | |||
+ | На примере mysql, узнаем код процесса, потом находим сколько файлов держит | ||
+ | <source lang="bash"> | ||
+ | [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 | ||
+ | </source> | ||
+ | процесс держит 3619 файлов. | ||
2) Поправить в '''/etc/sysctl.conf''': | 2) Поправить в '''/etc/sysctl.conf''': |
Текущая версия на 08:15, 17 мая 2018
Для 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