centos7 修改进程最大文件数

做项目时发现一个问题,通过ulimit -n查看系统限制的单个进程最大句柄数是65535,但是在自己的程序中发现远远达不到这个限制就已经报错了:too many open files。到底是因为一瞬间程序本身确实用掉了这么大的句柄,还是有其他什么原因呢?

解决问题前,先学习了一个查看指定进程资源限制的命令:cat /proc/<pid>/limits

可以发现,系统层面的控制对我的进程来说并不生效。

在我的环境中,是通过 /etc/security/limits.conf中添加了以下两行:

为什么不生效呢? 仔细看limits.conf这个文件的开头:

 

发现了吧?limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。而我的程序正好封装成service了!!

对于systemd service的资源限制,如何配置呢?

有两种方法:

1、单个service的配置。比如我在自己封装的.service文件中添加了一行:

添加后重新加载就行了 (systemctl daemon-reload)

2、全局的配置(这个没有尝试过)

修改/etc/systemd/system.conf或者/etc/systemd/user.conf。这两个文件中有DefaultLimitNOFILE这个配置项。system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。修改后需要重启系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值