一、遇到的一些问题
记得 2008 年做性能测试的时候,新进7台 lenovo 4核4G 服务器用于性能测试。
当时资源紧张,这7台服务器都装了双系统(Win2003/CentOS5)空闲时用于做测试机(压测的Agent)。
当时给Nginx做了一系列测试,印象很深的是:在这批机器上,Nginx状态页面的压测。
短连接的话最佳QPS约4万,长连接的话最高QPS约13万。
大概3年后,那批 lenovo 服务器已经没人瞧得上了,只能做肉鸡。
然而,一次不经意的测试,发现再牛的服务器,短连接最佳QPS也高不了多少。而且,测试机的资源没用完,被测试服务器的资源也用不完,网络也没瓶颈。
服务器资源使用率很低,然而响应就是不够快。
最后,我们发现了瓶颈在监听的入口!是否可以提高监听入口的性能?是否可以端口复用?最后我们找到了SO_REUSEPORT。
SO_REUSEPORT支持多个进程或者线程绑定到同一端口,提高服务器程序的性能。
二、解决方案
测试环境
Dell PowerEdge M620 Intel(R)Xeon(R)CPU E5–2620v2@2.10GHz
Linux3.16.0–4–amd64#1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux
Ethernet controller:Broadcom Corporation NetXtreme II BCM5781010Gigabit Ethernet(rev10)
查看编译参数