nginx是非常高性能的web服务,交付web服务时我非常想知道它究竟能承载的多少并发量??我们知道影响服务性能的因素有很多如出口带宽、磁盘io、内存和cpu资源;ok 今天就来测试一把看看如何充分使用nginx性能。
环境:主机资源:aliyun 2核4G操作系统: centos7网络环境: 阿里云vpc内网version: openresty/1.13.6.2
涉及环境调优
通过ulimit
,sysctl
命令检查系统环境限制,不展开说明
nginx 配置
cat /proc/cpuinfo | grep processor# 查看cpu核数
cat /nginx.conf
worker_processes 2; #cpu核数,建议不大于8events { 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可用客户端连接数;
正常web服务
客户端最大连接数 = worker_processes
* worker_connections
nginx反向代理
#作为反向代理,因为浏览器默认会开启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
参考