zoukankan      html  css  js  c++  java
  • Netty NIO 框架性能压测-短链接-对比Tomcat

    压测方案
    1. 准备多个文件大小分别为 1k 10k 100k 300k
    2. 使用ab分别按 [50,2000](按50逐渐叠加)压测服务,每次请求10W次
    3. 硬件信息:CPU:Intel(R) Xeon(R) CPU 1.86GHz ×4 4G
    4. 统计脚本:grep "Requests per second:" 300k_* | awk -F':' '{print substr($1,6),$3}'|sort -n
    5. 1k 10k 压测的时候load维持在3左右,100k 300k的load飙升到5 。
    压测结果
    1. 在小文件(小于10k)情况下Netty的性能要优于Tomcat,qps大概能提升50%,而且比Tomcat稳定。
    2. 在并发量增大时候Netty表现得比Tomcat稳定,通过修改内核加快TIME_WAIT的回收时间,从而提高系统的并发量。
    3. 在大文件的情况下Netty没有任何优势,而且线程池相关的没有Tomcat优秀,Tomcat的内存回收更优秀些。
    4. 结论:Netty适合搭建轻量级的应用,特别适合传输内容少,但是并发量非常高的应用。或者是大文件下载服务器。

     

    修改TIME_WAIT回收时间
    vi /etc/sysctl.conf
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
     
    /sbin/sysctl -p

    net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间

    相关数据(下 载)
    ===== Netty =====
    ====== 1k ======
    50 15661.50 [#/sec] (mean)
    100 13429.52 [#/sec] (mean)
    150 15385.05 [#/sec] (mean)
    200 15598.34 [#/sec] (mean)
    250 15135.97 [#/sec] (mean)
    300 13494.79 [#/sec] (mean)
    350 15102.49 [#/sec] (mean)
    400 14614.11 [#/sec] (mean)
    450 13463.52 [#/sec] (mean)
    500 13447.48 [#/sec] (mean)
    550 13126.29 [#/sec] (mean)
    600 11108.25 [#/sec] (mean)
    650 11073.34 [#/sec] (mean)
    700 14518.88 [#/sec] (mean)
    750 13409.66 [#/sec] (mean)
    800 13060.86 [#/sec] (mean)
    850 11938.25 [#/sec] (mean)
    900 13133.88 [#/sec] (mean)
    950 13670.75 [#/sec] (mean)
    1000 13803.70 [#/sec] (mean)
    1050 16414.20 [#/sec] (mean)
    1100 14770.09 [#/sec] (mean)
    1150 11108.65 [#/sec] (mean)
    1200 13294.72 [#/sec] (mean)
    1250 13448.52 [#/sec] (mean)
    1300 15128.31 [#/sec] (mean)
    1350 13367.31 [#/sec] (mean)
    1400 14277.91 [#/sec] (mean)
    1450 13193.80 [#/sec] (mean)
    1500 14272.63 [#/sec] (mean)
    1550 11004.96 [#/sec] (mean)
    1600 13438.72 [#/sec] (mean)
    1650 13105.43 [#/sec] (mean)
    1700 13653.39 [#/sec] (mean)
    1750 13366.72 [#/sec] (mean)
    1800 12727.40 [#/sec] (mean)
    1850 13075.32 [#/sec] (mean)
    1900 11103.91 [#/sec] (mean)
    1950 13463.83 [#/sec] (mean)

    ====== 10k ======
    50 7280.51 [#/sec] (mean)
    100 9089.69 [#/sec] (mean)
    150 9423.90 [#/sec] (mean)
    200 8130.07 [#/sec] (mean)
    250 8142.88 [#/sec] (mean)
    300 8311.20 [#/sec] (mean)
    350 8512.20 [#/sec] (mean)
    400 7940.84 [#/sec] (mean)
    450 7823.32 [#/sec] (mean)
    500 8284.60 [#/sec] (mean)
    550 8785.93 [#/sec] (mean)
    600 7725.20 [#/sec] (mean)
    650 7753.23 [#/sec] (mean)
    700 8184.61 [#/sec] (mean)
    750 8027.75 [#/sec] (mean)
    800 7934.49 [#/sec] (mean)
    850 7792.94 [#/sec] (mean)
    900 7734.34 [#/sec] (mean)
    950 7118.27 [#/sec] (mean)
    1000 7866.23 [#/sec] (mean)
    1050 7724.82 [#/sec] (mean)
    1100 7734.17 [#/sec] (mean)
    1150 7688.83 [#/sec] (mean)
    1200 7359.90 [#/sec] (mean)
    1250 7526.02 [#/sec] (mean)
    1300 7515.24 [#/sec] (mean)
    1350 6639.51 [#/sec] (mean)
    1400 7902.36 [#/sec] (mean)
    1450 7447.63 [#/sec] (mean)
    1500 8216.35 [#/sec] (mean)
    1550 8133.42 [#/sec] (mean)
    1600 7728.28 [#/sec] (mean)
    1650 7724.26 [#/sec] (mean)
    1700 7622.26 [#/sec] (mean)
    1750 7848.25 [#/sec] (mean)
    1800 7715.88 [#/sec] (mean)
    1850 7594.04 [#/sec] (mean)
    1900 8017.95 [#/sec] (mean)
    1950 7992.33 [#/sec] (mean)

    ====== 100k ======
    50 1079.56 [#/sec] (mean)
    100 1078.64 [#/sec] (mean)
    150 1080.74 [#/sec] (mean)
    200 1074.42 [#/sec] (mean)
    250 1082.69 [#/sec] (mean)
    300 1084.87 [#/sec] (mean)
    350 1080.00 [#/sec] (mean)
    400 1046.49 [#/sec] (mean)
    450 1050.25 [#/sec] (mean)
    500 1052.89 [#/sec] (mean)
    550 1046.49 [#/sec] (mean)
    600 1059.16 [#/sec] (mean)
    650 1051.33 [#/sec] (mean)
    700 1050.23 [#/sec] (mean)
    750 1045.41 [#/sec] (mean)
    800 1054.51 [#/sec] (mean)
    850 1034.61 [#/sec] (mean)
    900 1045.55 [#/sec] (mean)
    950 1036.36 [#/sec] (mean)

    ====== 3000k ======
    50 345.95 [#/sec] (mean)
    100 355.97 [#/sec] (mean)
    150 361.02 [#/sec] (mean)
    200 363.39 [#/sec] (mean)
    250 358.99 [#/sec] (mean)
    300 332.52 [#/sec] (mean)
    350 320.66 [#/sec] (mean)
    400 315.49 [#/sec] (mean)
    450 305.72 [#/sec] (mean)
    900 304.57 [#/sec] (mean)

    ===== Tomcat =====
    ====== 1k ======
    50 8808.85 [#/sec] (mean)
    100 9933.93 [#/sec] (mean)
    150 11037.66 [#/sec] (mean)
    200 10857.99 [#/sec] (mean)
    250 10389.63 [#/sec] (mean)
    300 11054.51 [#/sec] (mean)
    350 10397.66 [#/sec] (mean)
    400 10617.54 [#/sec] (mean)
    450 9600.62 [#/sec] (mean)
    500 10822.00 [#/sec] (mean)
    550 10815.92 [#/sec] (mean)
    600 11385.86 [#/sec] (mean)
    650 11094.66 [#/sec] (mean)
    700 10819.33 [#/sec] (mean)
    750 10821.28 [#/sec] (mean)
    800 9009.25 [#/sec] (mean)
    850 10814.18 [#/sec] (mean)
    900 9542.68 [#/sec] (mean)
    950 11095.51 [#/sec] (mean)
    1000 10811.53 [#/sec] (mean)
    1050 11084.72 [#/sec] (mean)
    1100 11089.07 [#/sec] (mean)
    1150 9590.15 [#/sec] (mean)
    1200 13826.40 [#/sec] (mean)
    1250 8186.03 [#/sec] (mean)
    1300 13961.24 [#/sec] (mean)
    1350 11077.12 [#/sec] (mean)
    1400 16536.29 [#/sec] (mean)
    1450 11430.66 [#/sec] (mean)
    1500 10817.56 [#/sec] (mean)
    1550 16195.09 [#/sec] (mean)
    1600 17205.66 [#/sec] (mean)
    1650 13300.61 [#/sec] (mean)
    1700 11061.43 [#/sec] (mean)
    1750 10837.05 [#/sec] (mean)
    1800 9786.94 [#/sec] (mean)
    1850 10808.81 [#/sec] (mean)
    1900 13019.67 [#/sec] (mean)
    1950 10090.06 [#/sec] (mean)

    ====== 10k ======
    50 5513.00 [#/sec] (mean)
    100 7093.53 [#/sec] (mean)
    150 9134.78 [#/sec] (mean)
    200 8910.81 [#/sec] (mean)
    250 9240.74 [#/sec] (mean)
    300 7805.80 [#/sec] (mean)
    350 8661.73 [#/sec] (mean)
    400 8835.57 [#/sec] (mean)
    450 7966.94 [#/sec] (mean)
    500 8322.71 [#/sec] (mean)
    550 6575.24 [#/sec] (mean)
    600 8726.30 [#/sec] (mean)
    650 8108.30 [#/sec] (mean)
    700 9226.79 [#/sec] (mean)
    750 8834.83 [#/sec] (mean)
    800 8386.70 [#/sec] (mean)
    850 8380.58 [#/sec] (mean)
    900 8323.48 [#/sec] (mean)
    950 9060.00 [#/sec] (mean)
    1000 7213.51 [#/sec] (mean)
    1050 9504.06 [#/sec] (mean)
    1100 9381.86 [#/sec] (mean)
    1150 8839.41 [#/sec] (mean)
    1200 9760.02 [#/sec] (mean)
    1250 9476.96 [#/sec] (mean)
    1300 8366.04 [#/sec] (mean)
    1350 9651.87 [#/sec] (mean)
    1400 9186.07 [#/sec] (mean)
    1450 9600.16 [#/sec] (mean)
    1500 8289.33 [#/sec] (mean)
    1550 9399.26 [#/sec] (mean)
    1600 8205.92 [#/sec] (mean)
    1650 8306.61 [#/sec] (mean)
    1700 9464.74 [#/sec] (mean)
    1750 8682.26 [#/sec] (mean)
    1800 9589.63 [#/sec] (mean)
    1850 8315.31 [#/sec] (mean)
    1900 9174.38 [#/sec] (mean)
    1950 8956.78 [#/sec] (mean)

    ====== 100k ======
    50 1033.41 [#/sec] (mean)
    100 1054.92 [#/sec] (mean)
    150 1061.72 [#/sec] (mean)
    200 1075.20 [#/sec] (mean)
    300 373.05 [#/sec] (mean)
    350 375.34 [#/sec] (mean)
    400 376.29 [#/sec] (mean)
    450 376.51 [#/sec] (mean)
    500 377.04 [#/sec] (mean)
    550 377.09 [#/sec] (mean)
    650 363.08 [#/sec] (mean)
    700 368.69 [#/sec] (mean)

    ====== 300k ======
    50 354.93 [#/sec] (mean)
    100 361.82 [#/sec] (mean)
    150 366.71 [#/sec] (mean)
    200 369.58 [#/sec] (mean)
    250 372.58 [#/sec] (mean)
    300 374.43 [#/sec] (mean)
    350 375.92 [#/sec] (mean)
    400 376.23 [#/sec] (mean)
    450 376.93 [#/sec] (mean)
    500 376.61 [#/sec] (mean)
    550 377.67 [#/sec] (mean)
    600 372.58 [#/sec] (mean)
  • 相关阅读:
    Android绝黑剑之AutoCompleteTextView、MultiAutoCompleteTextView之智能联想
    F5 BIGIP负载均衡器配置实例与Web管理界面体验
    Java进阶之动态绑定
    某大型银行深化系统之二十:异常规范
    数据结构之排序
    数据结构之数组
    使用ssh来登录其它linux机器
    beanstalkc简易指令说明集
    ruby数组方法concat和push的区别
    uWSGI基础攻略
  • 原文地址:https://www.cnblogs.com/405845829qq/p/6029942.html
Copyright © 2011-2022 走看看