在CentOS / RHEL上增加nproc

我有一个问题,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。 我没有testing过这个,但是我假设如果MySQL在系统启动的时候启动,那么它应该有正确的限制。

有没有办法增加这个pid和未来mysqld进程的nproc的软限制?

看来你可以通过使用以下设置来运行pid的限制:

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

这解决了眼前的问题,但如果我再次重新启动MySQL,我将需要重置限制(除非我将此添加到启动脚本),这似乎是一个痛苦。

查找并删除任何条目:

 /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 

这将涵盖从根提示重新启动。