nginx是非常高性能的web服务,交付web服务时我非常想知道它究竟能承载的多少并发量??我们知道影响服务性能的因素有很多如出口带宽、磁盘io、内存和cpu资源;ok 今天就来测试一把看看如何充分使用nginx性能。
环境:
主机资源:aliyun 2核4G
操作系统: centos7
网络环境: 阿里云vpc内网
version: openresty/1.13.6.2
通过ulimit
,sysctl
命令检查系统环境限制,不展开说明
cat /proc/cpuinfo | grep processor
# 查看cpu核数
cat /nginx.conf
worker_processes 2; #cpu核数,建议不大于8
events {
worker_connections 10240;
}
server {
listen 80 default_server;
default_type application/json;
server_name _;
return 200 '{"date":"$time_local","host":"web-test1","result":"nginx json"}';
access_log /usr/local/nginx/logs/default.log;
}
wrk -t2 -c40000 -d120s http://172.16.140.128
# t多少线程 c连接数 d压测时间;线程数不宜过多,核数的2-4倍
根据系统资源情况调整
worker_connections
和worker_processes
来限制nginx可用客户端连接数;
客户端最大连接数 = worker_processes
* worker_connections
#作为反向代理,因为浏览器默认会开启2个连接到server,而且Nginx还会使用fds(file descriptor)从同一个连接池建立连接到upstream后端
nginx作为http服务器的时候:
max_clients = worker_processes * worker_connections/2
nginx作为反向代理服务器的时候:
max_clients = worker_processes * worker_connections/4
或者从一般建立连接的角度:客户并发连接为1.
nginx作为http服务器的时候:
max_clients = worker_processes * worker_connections
nginx作为反向代理服务器的时候:
max_clients = worker_processes * worker_connections/2
参考 http://blog.51cto.com/liuqunying/1420556