https://www.jianshu.com/p/80de33bcf451?ivk_sa=1024320u
在使用systemd而不是sysvinit的系统上,/etc/security/limits.conf
将不再对systemd管理的服务生效,但仍然对登录进程生效。
这会导致登陆后查看ulimit -a
和/proc/{pid}/limits
不一致。
另一个常见的问题是使用类似于supervisor
的守护进程,而守护进程由systemd
管理,导致误认为是supervisor
的配置问题。这个问题可以通过查看supervisor自身的ulimit
来判断cat /proc/{supervisor pid}/limits
。
systemctl show
,按j
向下滚动,按k
向上滚动,/
后接字符串搜索,PgUp
向上翻页,PgDn
向下翻页,g
页首,G
页尾。这种操作方式是比较常用的,vim及linux很多文档都是这个。
修改/etc/systemd/system.conf
或/etc/systemd/user.conf
,具体修改哪个文件取决于你的服务。一般修改system.conf
。在文件中修改你需要的内容,一般来说只需要修改常用的三项:
DefaultLimitCORE=infinity
DefaultLimitNOFILE=65535
DefaultLimitNPROC=30629
修改并保存后,重启系统。
默认配置也可以放在/etc/systemd/system.conf.d/*.conf
。
如果不想修改系统级默认ulimit,也可以单独修改你的进程.service,具体路径可以用systemctl status 你的服务
来查看
systemd-system.conf
Cannot Increase open file limit past
/etc/security/limits.conf not applied