一、openresty介绍

1、什么是openresty

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

2、为什么选择 Nginx

1、处理响应请求很快
2、高并发连接
3、低的内存消耗
4、具有很高的可靠性:
5、高扩展性
6、热部署
7、自由的 BSD 许可协议

3、openresty架构模型

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

ps. 协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程,而协程是通过代码来完成协程的切换,任何时刻只有一个协程程序在运行。并且这个在运行的协程只有明确被要求挂起时才会被挂起。

架构图如下:

 
架构模型

OpenResty的优势

首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。

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

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

二、openresty性能对比图例

1、情景一:

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

2、压测结果

openresty性能图

 
性能图.png
 
曲线图.png

tomcat性能图

 
性能图.png
 
曲线图.png

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

2、情景二:

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

2、压测结果
openresty性能图

 
性能图.png
 
曲线图.png

tomcat

 
性能图.png
 
曲线图.png

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

3、场景三:

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

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

2、对比数2000的曲线对比

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

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

4、场景四:

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

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

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

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

5、场景五:

1、内存使用率对比:

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

2、CPU占用率的对比

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

三、openresty性能分析报告总结

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

 
 

0人点赞

 

openresty性能测试报告分析的更多相关文章

  1. 【大数据之数据仓库】kudu性能测试报告分析

    本文由  网易云发布. 这篇博文主要的内容不是分析说明kudu的性能指标情况,而是分析为什么kudu的scan性能会这么龊!当初对外宣传可是加了各种 逆天黑科技的呀:列独立存储.bloom filte ...

  2. Odoo:全球第一免费开源ERP权威性能测试报告完整版(绝对珍藏)

    Odoo平台简介 Odoo(以前叫OpenERP)是世界排名第一的开源ERP系统,最早由比利时一家公司开发,经过十几年发展,目前全世界Odoo的使用者超过2百万人,Odoo被翻译成几十种语言,Odoo ...

  3. 【Jmeter自学】Jmeter性能测试报告(八)

    http://www.cnblogs.com/YatHo/p/6092599.htmlhttp://blog.csdn.net/xiaojianpitt/article/details/4821554 ...

  4. linux性能调分析及调优

    转:https://blog.csdn.net/luokehua789789/article/details/53007456 Linux 性能分析以及调优介绍 写在前面:计算机要解决的基本问题之一是 ...

  5. 性能测试报告模板 V1.0

    1. 测试项目概述与测试目的 1.1 项目概述 本部分主要是针对即将进行压力测试的对象(接口.模块.进程或系统)进行概要的说明,让人明白该测试对象的主要功能与作用及相关背景. 1.2 测试目标 简要列 ...

  6. 性能测试——记XX银行保全项目性能问题分析优化

    记XX银行保全项目性能问题分析优化 数据库问题也许是大部分性能问题的关注点,但是JAVA应用与数据库交互的关节,JDBC 就像是我们人体的上半身跟下半身的腰椎,支持上半身,协调下半身运动的重要支撑点. ...

  7. 【转】性能测试报告模板 V1.0

    1. 测试项目概述与测试目的 1.1 项目概述  本部分主要是针对即将进行压力测试的对象(接口.模块.进程或系统)进行概要的说明,让人明白该测试对象的主要功能与作用及相关背景. 1.2 测试目标  简 ...

  8. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

  9. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

随机推荐

  1. 线上CPU飙升100%问题排查,一篇足矣

    一.引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高. 二.问题复现 线上系统突然 ...

  2. JAVA设计模式-动态代理(Proxy)源码分析

    在文章:JAVA设计模式-动态代理(Proxy)示例及说明中,为动态代理设计模式举了一个小小的例子,那么这篇文章就来分析一下源码的实现. 一,Proxy.newProxyInstance方法 @Cal ...

  3. jmeter入门(环境搭建&运行&初识)

    最近了解了一些性能测试的基础知识和原理决定动手实践下,比较选择了jmeter 一.什么是jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试 ...

  4. sublime_REPL使用及安装教程(解决Sublime无交互问题)

    谈到python编程工具能想到那些? pycharm?IDLE? Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等,还可自定义键绑定,菜单和工具栏. ...

  5. Mycat 配置文件rule.xml

    rule.xml配置文件定义了我们对表进行拆分所涉及到的规则定义.我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同. 该文件里面主要有tableRule和function这 ...

  6. springboot 使用i18n进行国际化

    1.i18n介绍 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.在资讯领域,国际化(i18n)指让产品(出版物,软件,硬 ...

  7. javascript中字符串对象常用的方法和属性

    前言 字符串是一种非常重要的数据类型,在Java等面向对象编程语言中,它代表对象类型,而在javascript中它却是一种基本数据类型,在开发的领域中,我们经常会碰到,无论是前端还是后台.比如后台验证 ...

  8. Spring Cloud Gateway 使用

    简介 Spring Cloud Gateway是Spring Cloud官方推出的网关框架,网关作为流量入口,在微服务系统中有着十分重要的作用,常用功能包括:鉴权.路由转发.熔断.限流等. Sprin ...

  9. Scala 异常处理

    Scala 异常处理: parseURL("www.baidu.com") 会返回一个 Success[URL] ,包含了解析后的网址, 反之 parseULR("www ...

  10. jq方法写选项卡的基本原理以及三种方法

    使用jq写选项卡,告别了繁琐的循环以及命名规范 基本原理: 1.当某一个btn被选中时,将这个btn的背景颜色设为橘色,其余兄弟btn背景颜色设为空(none) 2.如果子div与btn的索引相同,就 ...