openresty性能測試報告分析

 

1|01、openresty介紹


1|1一、什麼是openresty


經過揉和衆多設計良好的 Nginx 模塊,OpenResty 有效地把 Nginx 服務器轉變爲一個強大的 Web 應用服務器,基於它開發人員可使用 Lua 編程語言對 Nginx 核心以及現有的各類 Nginx C 模塊進行腳本編程,構建出能夠處理一萬以上併發請求的極端高性能的 Web 應用。

1|2二、爲何選擇 Nginx


一、處理響應請求很快
二、高併發鏈接
三、低的內存消耗
四、具備很高的可靠性:
五、高擴展性
六、熱部署
七、自由的 BSD 許可協議html

1|3三、openresty架構模型


Nginx 採用的是 master-worker 模型,一個 master 進程管理多個 worker 進程,基本的事件處理都是放在 woker 中,master 負責一些全局初始化,以及對 worker 的管理。在OpenResty中,每一個 woker 使用一個 LuaVM,當請求被分配到 woker 時,將在這個 LuaVM 裏建立一個 coroutine(協程)。協程之間數據隔離,每一個協程具備獨立的全局變量_G。sql

ps. 協程和多線程下的線程相似:有本身的堆棧,本身的局部變量,有本身的指令指針,可是和其餘協程程序共享全局變量等信息。線程和協程的主要不一樣在於:多處理器的狀況下,概念上來講多線程是同時運行多個線程,而協程是經過代碼來完成協程的切換,任什麼時候刻只有一個協程程序在運行。而且這個在運行的協程只有明確被要求掛起時纔會被掛起。編程

架構圖以下:tomcat

 
www.wityx.com
架構模型

OpenResty的優點服務器

首先咱們選擇使用OpenResty,其是由Nginx核心加不少第三方模塊組成,其最大的亮點是默認集成了Lua開發環境,使得Nginx能夠做爲一個Web Server使用。多線程

藉助於Nginx的事件驅動模型和非阻塞IO,能夠實現高性能的Web應用程序。架構

並且OpenResty提供了大量組件如Mysql、 Redis、Memcached等等,使在Nginx上開發Web應用更方便更簡單。目前在京東如實時價格、秒殺、動態服務、單品頁、列表頁等都在使用Nginx+Lua架構,其餘公司如淘寶、去哪兒網等。

2|02、openresty性能對比圖例


2|1一、情景一:


壓測介紹: 一、機器 壓測機:3臺物理機,配置 cpu: 40核 內存: 31G 被測機:1臺物理機,配置 cpu: 40核 內存: 31G 被測機 JVM默認配置 二、測試方式 併發數壓測,併發數從低往高進行壓測

二、壓測結果併發

openresty性能圖編程語言

 
www.wityx.com
性能圖.png

 

 
www.wityx.com
曲線圖.png

tomcat性能圖高併發

 
www.wityx.com
性能圖.png

 

 
www.wityx.com
曲線圖.png

三、壓測分析
從壓測結果看,在併發數場景一致的狀況下,隨着壓測併發數據的增長,openresty的MRT更加穩定,
始終維持到0.35左右,而tomcat的性能隨着併發數的增長,性能也快速降低,openresty的MRT只有
tomcat的1/10左右。

2|2二、情景二:


壓測介紹:
一、機器
壓測機:3臺物理機,配置 cpu: 40核 內存: 31G;3臺雲主機,配置cpu: 8核 內存: 16G
被測機:1臺物理機,配置 cpu: 40核 內存: 31G 被測機JVM默認配置
二、測試方式
增長請求量,

二、壓測結果
openresty性能圖

 
www.wityx.com
性能圖.png

 

 
www.wityx.com
曲線圖.png

tomcat

 
www.wityx.com
性能圖.png

 

 
www.wityx.com
曲線圖.png

三、壓測分析
從對比來看隨着機器增多,tomcat的TPS都有所增長,可是tomcat沒有openresty增長的明顯,同時openresty的MRT依然在1ms如下,比tomcat要小。

2|3三、場景三:


壓測介紹:
一、機器
壓測機:3臺物理機,配置 cpu: 40核 內存: 31G;3臺雲主機,配置cpu: 8核 內存: 16G
被測機:1臺物理機,配置 cpu: 40核 內存: 31G 被測機JVM默認配置
壓測結果
一、併發數300的曲線對比

 
www.wityx.com
openrestyTPS-RT曲線.png

 

 
www.wityx.com
tomcatTPS-RT曲線.png

二、對比數2000的曲線對比

 

 
www.wityx.com
openrestyTPS-RT曲線.png
 
www.wityx.com
tomcatTPS-RT曲線.png

壓測分析
從圖中能夠看出,在壓測條件一致的狀況下,openresty的TPS曲線更加穩定,穩定性更高

2|4四、場景四:


壓測介紹:
一、機器
壓測機:3臺物理機,配置 cpu: 40核 內存: 31G
被測機:1臺物理機,配置 cpu: 40核 內存: 31G 被測機JVM默認配置
二、測試方式
交叉對比

 
www.wityx.com
性能圖.png
 
www.wityx.com
性能曲線對比.png

壓測介紹:
一、機器
壓測機:3臺物理機,配置 cpu: 40核 內存: 31G;3臺雲主機,配置cpu: 8核 內存: 16G
被測機:1臺物理機,配置 cpu: 40核 內存: 31G
二、測試方式
交叉對比

 
www.wityx.com
性能圖.png

 

 
www.wityx.com
性能曲線對比.png

2|5五、場景五:


一、內存使用率對比:

 

 
www.wityx.com
openresty內存使用率.png
 
www.wityx.com
tomcat內存使用率.png
 
www.wityx.com
使用率對比圖.png

二、CPU佔用率的對比

 

 
www.wityx.com
openrestyCPU使用率.png
 
www.wityx.com
tomcatCPU使用率.png
 
www.wityx.com
使用率對比.png

3|03、openresty性能分析報告總結


一、在併發度比較低的狀況下,好比200一下,openresty和tomcat的性能差異不大,openresty的性能主要體如今佔用更小的內存,性能更加穩定;二、在併發量不斷增大,請求量不斷增大的狀況下,openresty的處理能力更快,不但能夠佔用更小的內存,還能夠保持很小的TPS,獲取更高的QPS,性能也更加穩定;三、openresty在內存使用率,CPU佔用率等方面性能要更好;

相關文章
相關標籤/搜索