Nginx中worker_connections和worker_rlimit_nofile的问题

分享于:2020-12-19 11:52:41

查看nginx日志,有一个[warn]: 3660#0: 20000 worker_connections are more than open file resource limit: 1024 !!

大概的意思就是: 20000并发连接已经超过了打开文件的资源限制:1024!


原来安装好nginx之后,默认最大的并发数(worker_connections)为1024,如果你的网站访问量过大,已经远远超过1024这个并发数,那你就要修改worker_connections和worker_rlimit_nofile这个值 ,值越大,并发数也有就大。

当然,你一定要按照你自己的实际情况而定,也不能设置太大,不能让你的CPU跑满100%。


打开配置文件在"event"这行上面添加这一行:

worker_rlimit_nofile  65535;


通过 ulimit -n 查看服务器可以打开文件的最大数目


注意:设置了worker_rlimit_nofile,修改worker_connections值时,是不能超过worker_rlimit_nofile的值,不然又会有前面的那个warn提示。


保存配置文件,重启nginx。


查看相关资料,生产环境中worker_connections 建议值最好超过9000,计划将一台nginx 设置为10240,再观察一段时间。


[root@web01 conf]# cat /application/nginx/conf/nginx.conf
worker_processes  2;
error_log logs/error.log;
#配置Nginx worker进程最大打开文件数
worker_rlimit_nofile 65535; #添加的
user www www;
events {
    #单个进程允许的客户端最大连接数
    worker_connections  10240;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    #访问日志配置
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
 
    #虚拟主机
    include /application/nginx/conf/extra/www.conf;
    include /application/nginx/conf/extra/blog.conf;
    include /application/nginx/conf/extra/bbs.conf;
    include /application/nginx/conf/extra/edu.conf;
    include /application/nginx/conf/extra/phpmyadmin.conf;
    include /application/nginx/conf/extra/status.conf;
 
    #隐藏版本号
    server_tokens on;
}