Назад | Перейти на главную страницу

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

Найдите и удалите все записи в:

/etc/security/limits.d/90-nproc.conf

Также добавьте в свой файл limits.d:

root soft nofile 20000
root hard nofile 20000
root soft nproc 20000
root hard nproc 20000

Это будет касаться перезапуска из корневой подсказки.

Кажется, вы можете установить пределы работающего pid, используя:

echo -n "Max processes=20000:191967" > /proc/`pidof mysqld`/limits

Это решает непосредственную проблему, но если я снова перезапущу MySQL, мне придется сбросить ограничения (если я не добавлю это в сценарий запуска), что кажется проблемой.