• openresty性能测试报告分析


     

    1|0一、openresty介绍


    1|11、什么是openresty


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

    1|22、为什么选择 Nginx


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

    1|33、openresty架构模型


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

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

    架构图如下:

     
    www.wityx.com
    架构模型

    OpenResty的优势

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

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

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

    2|0二、openresty性能对比图例


    2|11、情景一:


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

    2、压测结果

    openresty性能图

     
    www.wityx.com
    性能图.png
     
    www.wityx.com
    曲线图.png

    tomcat性能图

     
    www.wityx.com
    性能图.png
     
    www.wityx.com
    曲线图.png

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

    2|22、情景二:


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

    2、压测结果
    openresty性能图

     
    www.wityx.com
    性能图.png
     
    www.wityx.com
    曲线图.png

    tomcat

     
    www.wityx.com
    性能图.png
     
    www.wityx.com
    曲线图.png

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

    2|33、场景三:


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

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

    2、对比数2000的曲线对比

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

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

    2|44、场景四:


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

     
    www.wityx.com
    性能图.png
     
    www.wityx.com
    性能曲线对比.png

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

     
    www.wityx.com
    性能图.png
     
    www.wityx.com
    性能曲线对比.png

    2|55、场景五:


    1、内存使用率对比:

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

    2、CPU占用率的对比

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

    3|0三、openresty性能分析报告总结


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

     
  • 相关阅读:
    memset()函数,多用于清空数组
    Echart 词云图 上手代码 同含(echarts-wordcloud.js)最简单的教程 复制可用
    爬虫使用真实浏览器打开网页进行爬取
    jsoup 模拟登陆github网页(源代码)亲测可用 直接复制就能用
    拷贝虚拟电脑 Ubuntu 系统 含hadoop hive hbase mysql spark eclipse
    Python 连接MySQL 增删改查 直接可用(最简易,含源码)
    Python 中文词频统计,热词统计,简要分析(含上手源码)
    百度百科简介爬取(含源代码、信息领域词频数据csv格式)
    博客园博文爬取 标签爬取(含源代码)
    输入一行电报文字,将字母变成其下一字母
  • 原文地址:https://www.cnblogs.com/jking10/p/12873437.html
Copyright © 2020-2023  润新知