Увеличение nproc на CentOS/RHEL
У меня проблема, когда в mysqld не хватает потоков и выдает ошибки при большой нагрузке. Я проследил это до проблемы, когда pid, кажется, ограничен мягким пределом в 1024 процесса (сняли другие ограничения для читабельности):
[root@db1 limits.d]# cat /proc/`pidof mysqld`/limits
Limit Soft Limit Hard Limit Units
Max processes 1024 191967 processes
У меня есть файл в /etc/security/limits.d/ с именем 99-mysql.conf, который содержит:
mysql soft nofile 20000
mysql hard nofile 20000
mysql soft nproc 20000
mysql hard nproc 20000
Насколько я вижу, проблема в том, что MySQL запускается пользователем. Я не проверял это, но я предполагаю, что если MySQL запускается системой во время загрузки, то он должен иметь правильные ограничения.
Есть ли способ увеличить мягкое ограничение для nproc для этого pid и для будущих процессов mysqld?
2 ответа
Кажется, вы можете установить ограничения для запущенного pid с помощью:
echo -n "Max processes=20000:191967" > /proc/`pidof mysqld`/limits
Это решает непосредственную проблему, но если я перезапущу MySQL снова, мне нужно будет сбросить ограничения (если я не добавлю это в сценарий запуска), что кажется болезненным.
Ищите и удаляйте все записи в:
/etc/security/limits.d/90-nproc.conf
Также добавьте в ваш файл limit.d:
root soft nofile 20000
root hard nofile 20000
root soft nproc 20000
root hard nproc 20000
Это будет охватывать перезапуски из корневого приглашения.