天天看點

開啟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倍

測試環境

繼續閱讀