nginx 错误日志:
1
2
|
2016/02/28 21:07:36 [alert] 11569#0: *41512 socket() failed (24: Too many open files) while connecting to upstream, client: 192.168.1.110, server: localhost, request: "GET / HTTP/1.1" , upstream: "http://127.0.0.1:8080/" , host: "192.168.1.218" 2016/02/28 21:07:36 [alert] 11569#0: *41512 socket() failed (24: Too many open files) while connecting to upstream, client: 192.168.1.110, server: localhost, request: "GET / HTTP/1.1" , upstream: "http://127.0.0.1:8080/" , host: "192.168.1.218" |
1
|
解决办法: |
一、Linux打开文件最大数设置
查看打开文件最大数
ulimit -a
设置一
ulimit -HSn 102400 #只是当前shell有效
设置二
(1)ulimit -HSn 102400
(2)将ulimit -HSn 102400写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile。
(3)令修改open files的数值永久生效,则必须修改配置文件:vi /etc/security/limits.conf. 在这个文件后加上:
* soft nofile 102400
* hard nofile 102400
这种方法需要重启机器才能生效。
另一个,查看下nginx的配置文件。
查看 worker_rlimit_nofile 配置项
worker_rlimit_nofile 655350;
二、nginx打开文件最大数设置
nginx worker_rlimit_nofile Option (在nginx级别上提高打开的文件句柄限制)
nginx也有同样的限制,可以通过worker_rlimit_nofile来增加此限制数量。 来设置被nginx进程最大文件打开的数量,编辑nginx.conf文件,键入:
vi /usr/local/nginx/conf/nginx.conf (视你的配置文件的位置而定)
追加或者编辑:
worker_rlimit_nofile 30000;
保存并关闭文件,重新加载nginx配置,并重新执行开始查看软硬限制的命令:
su - nginx
ulimit -Hn
ulimit -Sn
输入示例:
30000
10000
其实在国内的网站是上搜到的内容大都讲的差不多了,原先我也如此,但一直没有解决,最后发现最关键的参数没设置,故一直不能超过1024个active conntions. 通过设置此参数即可解决:
worker_rlimit_nofile 30000;
三、Linux操作系统中打开文件数量的查看方法
ulimit -n 4096
也就是限制用户的最大文件打开数为4096个
在网上查了关于怎么查看文件打开数的文章大致有两种说法
/proc/sys/fs/file-nr
该文件与 file-max 相关,它有三个值:
已分配文件句柄的数目
已使用文件句柄的数目
文件句柄的最大数目
该文件是只读的,仅用于显示信息。
查看所有进程的文件打开数
lsof |wc -l
查看某个进程打开的文件数
lsof -p pid |wc -l
英文原文: Syntax: worker_rlimit_nofile number; Default: — Context: main Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process. 中文翻译: 为nginx工作进程改变打开最多文件描述符数目的限制。用来在不重启主进程的情况下增加限制。 例如: worker_rlimit_nofile 204800; 理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相除。
转自
nginx socket() failed (24: Too many open files) - 王恒志 - 博客园
https://www.cnblogs.com/xzlive/p/14973823.html
Nginx: 24: Too Many Open Files 错误和解决方案 - 房客 - 博客园
https://www.cnblogs.com/sxlfybb/archive/2011/09/15/2177983.html
Linux操作系统中打开文件数量的查看方法 - 心灵捕手 - 博客园 https://www.cnblogs.com/Dennis-mi/articles/6084581.html
(24条消息) nginx学习随笔--worker_rlimit_nofile_zhxuewu的专栏-CSDN博客_worker_rlimit_nofile
https://blog.csdn.net/zhxuewu/article/details/77932441
- 英文原文:
Syntax: worker_rlimit_nofile number;
Default: —
Context: main
- 1
- 2
- 3
Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process.
-
中文翻译:
为nginx工作进程改变打开最多文件描述符数目的限制。用来在不重启主进程的情况下增加限制。
- 1
例如:
worker_rlimit_nofile 204800;
- 1
理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相除。