linux最大允许的文件描述符open files数nofile修改

open file resource limit 是linux中process可以打开的文件句柄数量。增加这个数值需要调整两个配置:


第一步,
修改系统最大允许的文件描述符


查看当前的设置:


$
cat /proc/sys/fs/file-max


2390251


或者


$
sysctl -a


fs.file-max
= 2390251


该系统是CentOS
5.x x64版本,安装好后没有做过优化设定, 2390251是其默认值


$
ulimit -n


1024


如果
/proc/sys/fs/file-max小于我们要设定的句柄数量,可以通过:


$echo
"2390251" > /proc/sys/fs/file-max


或者修改
/etc/sysctl.conf,在文件中修改fs.file-max的值(没有就创建一条)


修改完后可以通过


$
sysctl -p


使设置生效


2.
文件描述符修改后,需要调整针对用户或者组(user/group)的限制


/etc/security/limits.conf,文件格式为


<domain>
<type>  <item>  <value>


其中<type>为
soft或者hard,有些应用会自动把soft限制提升到hard限制,如java,至于nginx,没有看到相关的文档。


如:


*
- nofile  8192


表示对所有的用户,文件描述符可以用到
8192, 或者


user_abc
- nofile  8192


表示对用户
user_abc,文件描述符可以用到 8192


3.
有些情况 /etc/security/limits.conf并不会发生作用,如在 init.d 中启用的进程,或者daemons运行的进程。


此时比较有效的办法是在init的script中,明确命令
ulimit -n xxxxx


除了在系统中进行设定 nofile(fs.file-max) 值外,可以在 nginx.conf
中指定worker_process可以使用的nofile值,如:


#user  nobody;

worker_processes  3;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

error_log  logs/error.log  info;

pid        /var/run/nginx.pid;

worker_rlimit_nofile    8192;

events {

      use epoll;

      worker_connections  8192;

}

重新加载nginx配置,使新设定生效。

你可能感兴趣的:(linux)