天天看点

开启reuse_port让Tengine性能提升3倍

为什么 reuse_port

记得 2008 年做性能测试的时候,新进7台 lenovo 4核4g 服务器用于性能测试。

当时资源紧张,这7台服务器都装了双系统(win2003/centos5)空闲时用于做肉鸡(压测的agent)。

当时给nginx做了一系列测试,印象很深的是:在这批机器上,nginx状态页面的压测。

大概3年后,那批 lenovo 服务器已经没人瞧得上了,只能做肉鸡。

然而,一次不经意的测试,发现再牛的服务器,短连接最佳qps也高不了多少。

而且,肉鸡的资源没用完,被测试服务器的资源也用不完,网络也没瓶颈。

最后,我们发现了 so_reuseport。对,瓶颈在这(监听的入口)!

引入 lvs fullnat

当时用的 centos 5、6,内核版本都还在 2.6。

尝试过新内核,遇到一些奇怪的现象无力维护,最终放弃。

也可以用nginx监控多个ip来突破瓶颈(多虚拟几个ip),维护成本略高。

也可以用lvs的nat方式来做转发,然而nat对网络的要求你懂的。

最终我们决定使用 淘宝lvs,依赖 淘宝内核。

然后使用 fullnat ,将对外端口映射到每个节点的多个端口(而非多ip)。

曾在线上做过极端测试,效果非常显著。然后我们就上线了!

压测 reuse_port

开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍

探个究竟

开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍
开启reuse_port让Tengine性能提升3倍

测试环境

继续阅读