一、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. Linux之VMWare下Centos7的三种网络配置过程

    Linux之VMWare下Centos7的三种网络配置过程 环境: 虚拟软件:VMWare 14.0 客户机:windows 10 虚拟机:centos 7 VMware三种网络连接方式 Bridge ...

  2. Eclipse的egit插件冲突合并方法

    Eclipse有一个git的插件叫EGit,用于实现本地代码和远程代码对比.合并以及提交.但是在本地代码和远程代码有冲突的时候,EGit的处理方案还是有点复杂.今天就彻底把这些步骤给理清楚,并公开让一 ...

  3. Redis数据库之编程项目及练习资源

    实训项目 :   NOSQL数据库设计与应用实训         注释:   Redis数据库编程项目示例及练习资源 项目源码获取: https://pan.baidu.com/s/19f0F7cmx ...

  4. Spring 梳理 - filter、interceptor、aop实现与区别 -第二篇

    spring mvc中的Interceptor可以理解为是Spring MVC框架对AOP的一种实现方式.一般简单的功能又是通用的,每个请求都要去处理的,比如判断token是否失效可以使用spring ...

  5. 1.html基础知识

    1.html定义: html是一种超文本标记语言,“超文本”是指页面可以包含图片.链接.音乐.程序等非文字元素. Html不是一种编程语言. 2.html5的新特性: 用于绘画的canvas元素: 用 ...

  6. MongoDB4.0支持事务管理

    ​ 背景 最后我们看一下MongoDB的事务管理,本来是没这一篇的,因为网上大部分资料太老,都为MongoDB之前的版本,的确在MongoDB 4.0版本之前是没有事务管理,但是今天年初MongoDB ...

  7. 概率与期望详解!一次精通oi中的概率期望

    目录 基础概念 最大值不超过Y的期望 概率为P时期望成功次数 基础问题 拿球 随机游走 经典问题 期望线性性练习题 例题选讲 noip2016换教室 区间交 0-1边树求直径期望 球染色 区间翻转 二 ...

  8. VR中的“寻路(wayfinding)”

    虚拟现实(VR)中很重要的一个问题就是Locomotion(用户在VR中的移动).这个Locomotion分为两种,一种是点对点的,如传送门的方式,一种是包含了可以操控的中间过程的,这种被称为“导航( ...

  9. 面试官:你有m个鸡蛋,如何用最少的次数测出鸡蛋会在哪一层碎?

    假设你面前有一栋n层的大楼和m个鸡蛋,假设将鸡蛋从f层或更高的地方放扔下去,鸡蛋才会碎,否则就不会.你需要设计一种策略来确定f的值,求最坏情况下扔鸡蛋次数的最小值. leetcode原题链接 乍一看这 ...

  10. IDEA 学习笔记之 Maven项目开发

    Maven项目开发: 配置Maven: 新建Maven项目: 选择webapp: 和eclipse一样,设置: 修改maven配置,添加一个新属性,可以加快项目创建速度: 完成: 新建java和tes ...