【ulimit】Centos 7 中的ulimit -HSn 65535 对进程的文件句柄限制不生效??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【ulimit】Centos 7 中的ulimit -HSn 65535 对进程的文件句柄限制不生效??相关的知识,希望对你有一定的参考价值。

参考技术A linux下用ulimit设置连接数最大值,默认是1024,在高负载下要设置为更高。

ulimit只能做临时修改,重启后失效。

ulimit -a 显示当前所有的资源限制
ulimit -H 设置硬件资源限制
ulimit -S 设置软件资源限制
ulimit -n 设置进程最大打开文件描述符数
ulimit -u <程序数目>  用户最多可开启的程序数目

这个文件句柄限制怎么设置了/etc/security/limits.conf 对进程都无效呢?

在修改/etc/security/limits.conf 以及使用 ulimit -n命令进行修改文件句柄数量时,是需要重新进入终端方可生效。

服务器都重启了一遍了,就是不生效!

百度,谷歌查找资料,据说还要修改 /etc/security/limits.d/20-nproc.conf < /etc/security/limits.conf 限制实际取决于 /etc/security/limits.d/20-nproc.conf的配置。

也就是说哪怕/etc/security/limits.conf设置最大打开数是65535,而/etc/security/limits.d/20-nproc.conf里配的是4096,那最终结果还是用户最大只能打开4096个文件句柄,于是赶紧看了下/etc/security/limits.d/20-nproc.conf配置,果然是4096。

最后有一个好的发现,说这个限制是在进程里面限制的,于是找了个httpd.service的启动脚本进程进行修改,如下:

但是要是我有100个进程,总不能修改100次吧,系统没这么傻逼吧,于是想到Centos7 系统是采用Systemd进行管理服务的,是否会和这个有所关系呢?

在C7系统,进程改用了systemd代替之前SysV进行服务管理,原先的/etc/security/limits.conf文件配置的作用域缩小,只适用于通过PAM认证登录用户的资源显示,对systemd的service资源限制不生效的。

在C7里面,要进行全局的配置进程打开文件数量,需要修改/etc/systemd/system.conf 和 /etc/systemd/user.conf 这两个,当然,如果只是进程修改system.conf即可,里面有两个默认值调整一下:

CentOS7 版本,是先读/etc/security/limits.conf,如果/etc/security/limits.d/目录下还有配置文件的话,会遍历读取里面文件,所以/etc/security/limits.d/里面的文件里面的配置会覆盖/etc/security/limits.conf的配置。

在服务器硬件资源有限的情况下,最大的利用服务器资源,提高服务器的并发处理能力,是很多运维技术人员思考的问题。

要提高Linux系统下的负载能力,我们需要选择可以承载更高并发的web服务器,例如nginx这种天生的并发悍将,如果是执意使用apache,那么也应该在worker模式下工作。

除此之外,对于系统内核的调优必不可少,但是最能解决服务器负载问题的方法就是配置的提升,既稳定,又有效的方法。

基于CentOS 7的EMQ或EMQ X百万级并发调优
https://www.bianchengquan.com/article/156268.html

Elasticsearch集群优化
https://www.cnblogs.com/david-qing/p/8560245.html

Centos7高并发优化
https://www.modb.pro/db/159144

以上是关于【ulimit】Centos 7 中的ulimit -HSn 65535 对进程的文件句柄限制不生效??的主要内容,如果未能解决你的问题,请参考以下文章

centos8平台使用ulimit做系统资源限制

[Linux] 关于Centos6中ulimit nproc用户进程数的限制

Centos 不重启 修改ulimit参数

生产经验-Centos温和调整ulimit值

CentOS系统服务配置资源限制ulimit

ulimit -n 修改系统打开文件限制