- OpenResty完全開發指南:構建百萬級別并發的Web應用
- 羅劍鋒
- 757字
- 2019-07-25 11:55:05
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個請求)測試得到的結果:

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還可以輕松開啟多個進程服務,成倍地擴充服務能力。
相信經過這兩輪測試,讀者心中應該可以得到明顯的結論了。
- Mastering QGIS
- C語言程序設計
- 青少年學Python(第1冊)
- Python算法指南:程序員經典算法分析與實現
- C語言開發基礎教程(Dev-C++)(第2版)
- ElasticSearch Cookbook(Second Edition)
- SQL Server 2016 從入門到實戰(視頻教學版)
- Mudbox 2013 Cookbook
- C語言程序設計與應用實驗指導書(第2版)
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- 前端程序員面試算法寶典
- Access 2016數據庫應用與開發:實戰從入門到精通(視頻教學版)
- Kotlin入門與實戰
- Spring MVC Cookbook
- Flink原理深入與編程實戰:Scala+Java(微課視頻版)