Увеличение 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

Это будет охватывать перезапуски из корневого приглашения.

Другие вопросы по тегам