摘要
本文讲Linux系统参数的含义及调优,本文会持续更新。
正文
最大文件句柄数设置
a) 设置系统级别的所有进程允许打开的最大文件句柄数
# cat /proc/sys/fs/file-max
可以通过编辑/etc/sysctl.conf 来设定,比如:
fs.file-max = 1024000
保存好后,执行sysctl -p来生效。
b) 设置用户级别的所有进程的允许打开的最大文件句柄数
可以编辑/etc/security/limit.conf , 也可以在/etc/security/limit.d/目录下添加文件,比如添加user.conf:
* hard nofile 200000
* soft nofile 200000
root hard nofile 500000
root soft nofile 500000
以上设置表示root用户允许的最大文件句柄数为500000,其他用户都为200000,设置好后,需要退出terminal,或关闭session ,然后再登录进入,执行ulimit -a就可以看到效果了。
对于有些操作系统,在增加文件句柄数的时候,你可能会遇到这样的错误:
ulimit open files cannot modify limit operation not permitted
这说明你的OS对用户的最大文件句柄数有限制,最大只能设为1024000,我曾在redhat 6.7版本中遇到过这个问题,不知道是不是有这个硬性限制,还是可以通过调整其他参数来调大最大文件句柄数,有经验的同学可以留言讨论。
若你不幸遇到这种情况,在修改了limit.conf文件后,千万要记着不要退出或关闭窗口,要再打开一个窗口试试看能不能登录,若不能登录,而且在/var/log/secure日志中有如下错误,说明最大文件句柄数设置的有问题。
pam_limits(sshd:session): Could not set limit for 'nofile': Operation not permitted
c) 查看运行进程的文件句柄数
/proc/$PID/limits
若要对已经在运行的进程更改文件句柄数,可以使用prlimit , 这个工具需要安装util-linux-2.21包
prlimit --pid <pid> --<limit>=<soft>:<hard>
prlimit --pid 12345 --nofile=1024:2048