ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

一次修改limits.conf 引发的血案

一次修改limits.conf 引发的血案 起因:在重启nginx 过程中发现有报 open file 限制的警告于是没考虑太多直接去修改/etc/security/limits.conf修改前* soft nofile 65536 * hard nofile 65536修改后* soft nofile 6553600 * hard nofile 6553600保存退出发现无论是复制窗口还是重新登录都会失败因为是使用的普通账号在执行sudo 和su 的时候也会报错如下sudo: pam_open_session: Permission denied sudo: policy plugin failed session initialization原因:/etc/security/ulimits.conf 文件中nofile 的软硬限制的值不能超过内核参数 /proc/sys/fs/nr_open 否则就有问题解决方案如果已经重启启动那没有没法了只能重启进入单用户模式然后将limits.conf 修改为正常的如果只有一个普通账号还登录着也没有办法了因为sudo也用不了只能重启单用户如果还有会话使用root 用户登录着可以直接用root修改回来或者root把 /proc/sys/fs/nr_open 内核参数调大关于linux上默认资源限制的一些参考知识ulimitulimit 是用来限制用户在当前会话的资源限制的若新开一个会话则用户的会话级资源限制又会回复到默认值。如果要想让用户的资源限制的修改同步到用户的每个限制有两种做法写入用户家目录的 profile or bashrc 中修改limits.conflimits.conf关于limits.conf 中nofile 的修改需要慎重虽然根据man 手册可以设置值为 -1unlimited or infinity indicating no limit但如果设置为-1则会出现文章之前出现的问题。我这里还只是将nofile的值修改的太大就出现问题。内核参数具体的内核参数的解释可以查看http://man7.org/linux/man-pages/man5/proc.5.html/proc/sys/fs/file-max操作系统级别的限制所有进程打开的文件数之和不能超过这个值/proc/sys/fs/file-nr操作系统级别的参数查看当前已经打开的文件数以及操作系统允许的最大值/proc/sys/fs/nr_open进程级别的参数限制每个进程能打开的最大文件数
返回列表