官术网_书友最值得收藏!

1.11 性能對比

雖然OpenResty基于高性能的Nginx,目前也已經有了諸多的成功應用案例,但仍然有很多人對它抱有疑慮、持觀望態度。一個可能的原因是它使用了較為“小眾”的腳本語言Lua,與其他常見的開發語言相比社區很小,而且也沒有大公司為之“背書”,知名度低導致不了解和偏見。但實際上,OpenResty在開發效率和運行效率上都超過了它的競爭對手。

我們可以用實際的例子來對比驗證一下OpenResty的運行效率,比較的對象是與OpenResty類似、目前較為流行的Web開發語言/環境:Node.js、Go、PHP和Python。

測試方式是各自實現一個最簡單的HTTP服務,不做任何額外的優化調整,直接返回“Hello World”字符串(具體的程序可以在GitHub上找到,位于benchmark目錄)。

各語言/環境的詳細信息如下:

    ■  OpenResty      :版本號1.13.6.1,源碼編譯。
    ■  Node.js        :版本號4.2.6, apt-get安裝。
    ■  Go             :版本號1.6.2, apt-get安裝。
    ■  PHP            :版本號7.0.22(運行在Apache2.4.18上), apt-get安裝。
    ■  Python         :版本號2.7.12, apt-get安裝。

注:本書作者并不很擅長Python,所以測試程序只使用了內置的、最簡單的HTTPServer,并未使用twisted、tornado、gevent等框架,可能有些不公平,望見諒。

測試環境是一個單核Linux虛擬機,下面的表格是使用“ab -c 100-n 10000”(并發100個連接,共10000個請求)測試得到的結果:在這次測試中Python發生了“Broken Pipe”錯誤,未能完成測試,故沒有數據。

ab測試結果如圖1-2所示:

圖1-2 ab測試結果

由表中的數據可見OpenResty的運行效率是最高的,在RPS指標上是Node.js的3.1倍,Go的1.6倍,PHP的2.5倍,遠遠勝出。

單使用ab測試可能還不足以說明問題,我們還可以使用http_load再運行另一個測試,參數是“-p 50-s 5”(并發50個連接,持續5秒),測試結果如下:

http_load測試結果如圖1-3所示:

圖1-3 http_load測試結果

毫無意外,在這次測試中OpenResty仍然是遙遙領先,在重要的fetches/sec指標上是Node.js的3.2倍,Go的1.8倍,PHP的2.9倍,Python的6.2倍。

對于高負荷的網站來說,即使是5%~10%的性能提升都是非常有價值的,更何況是50%~200%。注意這還是未經優化的結果,實際上OpenResty還可以輕松開啟多個進程服務,成倍地擴充服務能力。

相信經過這兩輪測試,讀者心中應該可以得到明顯的結論了。

主站蜘蛛池模板: 南汇区| 古田县| 抚远县| 巴林右旗| 会泽县| 孟州市| 清河县| 淄博市| 璧山县| 越西县| 伊宁市| 西乌珠穆沁旗| 喀喇沁旗| 陆丰市| 凤冈县| 兰州市| 合江县| 崇州市| 双牌县| 遵义县| 峡江县| 德惠市| 高尔夫| 额敏县| 华容县| 临安市| 云林县| 连州市| 启东市| 西乡县| 太康县| 香港 | 龙岩市| 慈利县| 武功县| 乐平市| 通城县| 南投市| 林西县| 庆云县| 申扎县|