返回列表 发帖

Nginx的并发连接数

笺注:Nginx的安装可以参考: CentOS6_Nginx反向代理+负载均衡(轮询)


查看Nginx的主配置文件:(默认状态;截图有省略)
[root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
图片1.png
2021-3-6 22:13



测试Nginx的进程最大可打开文件数,找到Nginx的worker process的ID:
ps -ef |grep nginx |grep -v grep
图片2.png
2021-3-6 22:14


cat /proc/1615/limits
图片3.png
2021-3-6 22:14



Max open files受限于操作系统的“进程最大可打开文件数”,操作系统的“进程最大可打开文件数”的查询方法:
[root@localhost ~]# ulimit -n
1024


操作系统的“进程最大可打开文件数”的修改方法:
[root@localhost ~]# tail -5 /etc/security/limits.conf
# End of file
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535



重启服务器:
[root@localhost ~]# reboot


服务器重启后,更改生效:
[root@localhost ~]# ulimit -n
65535





配置Nginx的worker_processes、worker_rlimit_nofile、worker_connections :

修改Nginx的主配置文件:
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
#user  nobody;

worker_processes auto;  #Nginx开启的worker进程数;可以设置为自动 auto ,这样Nginx会自动根据CPU核心数生成对应数量的worker进程

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

worker_rlimit_nofile 65535;  #Nginx的worker进程最大可打开文件数

events {
        use epoll;
        worker_connections 51200;  #单个worker进程的最大并发连接数;要根据服务器性能(内存使用量等等)来调整
        multi_accept on;
}

如下图:
图片4.png
2021-3-6 22:16


备注:
worker_process 最好与CPU核心数一致,不能大于CPU核心数

Nginx的最大并发连接数 = worker_processes * worker_connections

worker_rlimit_nofile 最好大于或等于 Nginx的最大并发连接数


重启Nginx服务:
[root@localhost ~]# service nginx restart


查看服务器的CPU核心数:
[root@localhost ~]# cat /proc/cpuinfo | grep processor | wc -l
1

[root@localhost ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 78
Model name:            Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
Stepping:              3
CPU MHz:               2400.003
BogoMIPS:              4800.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0



再次测试Nginx的进程最大可打开文件数:(服务器重启后,要重启Nginx才生效)
ps -ef |grep nginx |grep -v grep
图片5.png
2021-3-6 22:17


cat /proc/1654/limits
图片6.png
2021-3-6 22:17



笺注:
Nginx的最大并发连接数受限于Max open files,当超过限制值时,会出现Too many open files的信息:
[root@localhost ~]# curl http://127.0.0.1/
-bash: start_pipeline: pgrp pipe: Too many open files
curl: error while loading shared libraries: libcurl.so.4: cannot open shared object file: Error 24



检测Nginx的进程最大可打开文件数的脚本:(假如Max open files的限制值不是65535,就重启Nginx服务)
[root@localhost ~]# cat check_Nginx_Max_open_files.sh
#!/bin/bash

a=`ps -ef |grep nginx |grep -v grep |grep 'worker process' |awk '{print $3}'`

b=`cat /proc/$a/limits |grep 'open' |awk '{print $4'}`

if [ $b -ne 65535 ]; then
/sbin/service nginx restart
fi


结合任务计划:
[root@localhost ~]# crontab -e
追加:
*/30 * * * * bash /root/check_Nginx_Max_open_files.sh






查看当前Nginx的并发连接数:

修改Nginx的主配置文件:
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
插入以下代码:
        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

如下图:
图片7.png
2021-3-6 22:19



重启Nginx服务:
[root@localhost ~]# service nginx restart


测试:
[root@localhost ~]# curl http://127.0.0.1/nginx_status
Active connections: 2  #Nginx正在处理的活动连接数有多少个
server accepts handled requests
1171 1171 867
Reading: 0 Writing: 1 Waiting: 1





相关文章:
Nginx用户验证
Zabbix使用模板监控Nginx

Apache2.4的MPM模式(prefork)

LNMP一键安装包(lnmp_CentOS6.9)
本地备份站点目录和数据库+crontab计划任务




#################################
#################################
亲,学习研究也要劳逸结合哦,来我微店逛逛,买点东西好好犒劳犒劳自己和家人吧^_^^_^

FaSoLa户外便携吊床秋千室内单双人大学生宿舍家用成人儿童睡觉椅
dianzi.png
2020-1-24 15:50


FaSoLa 旅行晾衣架 旅游便携式折叠衣架出差多功能衣挂小撑子晾晒
yijia.png
2020-1-24 15:50

返回列表