关于系统性能瓶颈的定位,今天搬来一实例。希望和广大网友沟通分享
-
使用场景:
Nginx对外提供接口服务,本文以Nginx的状态页(stub_status)为例。
-
需要解决的问题:
定位性能瓶颈,并调优
-
测试方法
使用约40台测试机向一台Nginx服务器并发访问
-
服务器配置
DELL PowerEdge R510
CentOS 5.8 / Linux 2.6.18-308.8.2.el5 x86_64
Two Quad-Core Xeon E5606 @ 2.13GHz with L2 cache = 1MiB & L3 cache = 8MiB
System Memory 64GiB with width = 64 bits & clock = 1333MHz (0.8ns)
Broadcom BCM5716 driver=bnx2 driverversion=2.2.1j firmware=6.2.12 bc 5.2.3 speed=1Gbit/s
-
ulimit 配置
Firewall is stopped.
getenforce = Disabled
-
sysctl 配置
-
Nginx配置
nginx.conf定制配置项,其它全默认
worker_processes 8;
worker_connections 81920;
location = /status { # 测试此接口
stub_status on;
access_log off;
}
-
测试结果,服务器压力
从top结果我们可以看出:
-
未发现cpu有瓶颈
-
内存大量剩余
-
系统负载很低
-
没有磁盘IO
-
网卡软中断未出现瓶颈(带宽和fps也未到瓶颈)
-
测试结果,性能体现
此图我们可以看出:
-
逐步加压,约200个并发访问时,每秒事务数到顶
-
随并发数的增加,响应时间随之变长,但每秒响应数量并未同比增加
-
最终Nginx每秒成功响应2万次请求
大概3年前的服务器(Lenovo WQ R510 G6),1颗4核CPU/4G内存/146G-SAS。相同的测试环境下,都能每秒响应近4万次请求。
而这台 Dell R510 配置的服务器,每秒响应才2万。实在太低了!且资源上却未发现瓶颈 ,求解中……
2013-01-16:谜底已揭晓,http://hi.baidu.com/higkoo/item/f3258f02a5afa925a1312d26 。