openresty性能测试报告分析

1、openresty介绍

一、什么是openresty

经过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可使用 Lua 编程语言对 Nginx 核心以及现有的各类 Nginx C 模块进行脚本编程,构建出能够处理一万以上并发请求的极端高性能的 Web 应用。sql

二、为何选择 Nginx

一、处理响应请求很快
二、高并发链接
三、低的内存消耗
四、具备很高的可靠性:
五、高扩展性
六、热部署
七、自由的 BSD 许可协议编程

三、openresty架构模型

Nginx 采用的是 master-worker 模型,一个 master 进程管理多个 worker 进程,基本的事件处理都是放在 woker 中,master 负责一些全局初始化,以及对 worker 的管理。在OpenResty中,每一个 woker 使用一个 LuaVM,当请求被分配到 woker 时,将在这个 LuaVM 里建立一个 coroutine(协程)。协程之间数据隔离,每一个协程具备独立的全局变量_G。tomcat

ps. 协程和多线程下的线程相似:有本身的堆栈,本身的局部变量,有本身的指令指针,可是和其余协程程序共享全局变量等信息。线程和协程的主要不一样在于:多处理器的状况下,概念上来讲多线程是同时运行多个线程,而协程是经过代码来完成协程的切换,任什么时候刻只有一个协程程序在运行。而且这个在运行的协程只有明确被要求挂起时才会被挂起。服务器

架构图以下:多线程

 
架构模型

OpenResty的优点架构

首先咱们选择使用OpenResty,其是由Nginx核心加不少第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx能够做为一个Web Server使用。并发

借助于Nginx的事件驱动模型和非阻塞IO,能够实现高性能的Web应用程序。编程语言

并且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格、秒杀、动态服务、单品页、列表页等都在使用Nginx+Lua架构,其余公司如淘宝、去哪儿网等。高并发

2、openresty性能对比图例

一、情景一:

压测介绍:
一、机器
压测机:3台物理机,配置 cpu: 40核 内存: 31G
被测机:1台物理机,配置 cpu: 40核 内存: 31G 被测机JVM默认配置
二、测试方式
并发数压测,并发数从低往高进行压测性能

二、压测结果

openresty性能图

 
性能图.png

 

 
曲线图.png

tomcat性能图

 
性能图.png

 

 
曲线图.png

三、压测分析
从压测结果看,在并发数场景一致的状况下,随着压测并发数据的增长,openresty的MRT更加稳定,
始终维持到0.35左右,而tomcat的性能随着并发数的增长,性能也快速降低,openresty的MRT只有
tomcat的1/10左右。

二、情景二:

压测介绍:
一、机器
压测机:3台物理机,配置 cpu: 40核 内存: 31G;3台云主机,配置cpu: 8核 内存: 16G
被测机:1台物理机,配置 cpu: 40核 内存: 31G 被测机JVM默认配置
二、测试方式
增长请求量,

二、压测结果
openresty性能图

 
性能图.png

 

 
曲线图.png

tomcat

 
性能图.png

 

 
曲线图.png

三、压测分析
从对比来看随着机器增多,tomcat的TPS都有所增长,可是tomcat没有openresty增长的明显,同时openresty的MRT依然在1ms如下,比tomcat要小。

三、场景三:

压测介绍:
一、机器
压测机:3台物理机,配置 cpu: 40核 内存: 31G;3台云主机,配置cpu: 8核 内存: 16G
被测机:1台物理机,配置 cpu: 40核 内存: 31G 被测机JVM默认配置
压测结果
一、并发数300的曲线对比

 
openrestyTPS-RT曲线.png

 

 
tomcatTPS-RT曲线.png

二、对比数2000的曲线对比

 

 
openrestyTPS-RT曲线.png
 
tomcatTPS-RT曲线.png

压测分析
从图中能够看出,在压测条件一致的状况下,openresty的TPS曲线更加稳定,稳定性更高

四、场景四:

压测介绍:
一、机器
压测机:3台物理机,配置 cpu: 40核 内存: 31G
被测机:1台物理机,配置 cpu: 40核 内存: 31G 被测机JVM默认配置
二、测试方式
交叉对比

 
性能图.png
 
性能曲线对比.png

压测介绍:
一、机器
压测机:3台物理机,配置 cpu: 40核 内存: 31G;3台云主机,配置cpu: 8核 内存: 16G
被测机:1台物理机,配置 cpu: 40核 内存: 31G
二、测试方式
交叉对比

 
性能图.png

 

 
性能曲线对比.png

五、场景五:

一、内存使用率对比:

 

 
openresty内存使用率.png
 
tomcat内存使用率.png
 
使用率对比图.png

二、CPU占用率的对比

 

 
openrestyCPU使用率.png
 
tomcatCPU使用率.png
 
使用率对比.png

3、openresty性能分析报告总结

一、在并发度比较低的状况下,好比200一下,openresty和tomcat的性能差异不大,openresty的性能主要体如今占用更小的内存,性能更加稳定;二、在并发量不断增大,请求量不断增大的状况下,openresty的处理能力更快,不但能够占用更小的内存,还能够保持很小的TPS,获取更高的QPS,性能也更加稳定;三、openresty在内存使用率,CPU占用率等方面性能要更好;

相关文章
相关标签/搜索