zoukankan      html  css  js  c++  java
  • java项目性能测试过程记录

    一 准备环境和指标

     

    1.主机三台(linux,这里显示的都是伪主机地址):最好用干净的机子,做性能测试的时候别装其他东西在上面跑。

     100.22.0.98  部署自己的项目服务
     100.22.0.96  部署rpc服务(这里没用到 可以不搞)
     100.22.0.97  部署jmeter (这是必须的)
     

    2.统计指标:

    基线采集数据表结构如下:

    并发夏季数据表结构如下:

    注: 还可以统计gc情况,连接数等,我这里只列举一部分。

    3.测试标准

    》》》线程: 1    20    50   100   200

    》》》报文:10B  1k  2k  4k   8k

    二 准备jmx(需了解jmeter的基本使用)

    这里使用jmeter3.3版本,直接在官网下载。

    先在本地解压运行,注意用管理员权限运行jemter.bat,否则无法保存jmx文件。

     

    1.测试http连接,主要配置和元件如下图,可以先用一个线程测试一下连通性,然后保存为一个jmx文件。保存之前先把线程组勾成永远。

     2.junit连接测试  

    这个稍微麻烦一点,需要先搞定代码,把测试类写好,然后打包自己的项目,可以使用maven打包,最好打成tar包之类的。如XXXX.tar.gz

    解压以后,你的test类在哪个jar包里,就把哪个jar包放到jemter对应的目录下:如 C:Program Filesjmeterapache-jmeter-3.3libjunit  

    其余的所有依赖jar包都放到这个目录下:C:Program Filesjmeterapache-jmeter-3.3lib

    类名称就是你放在junit目录里可选择的测试类,还可以选择对应的test方法。和上面一样,用一个线程测试连通性之后就可以保存成jmx文件了。

    3.部署环境

    测试命令:./bin/jmeter -n -t jmx路径 -l 输出的日志文件

     机器上测http很简单,把jmx文件全上传到服务器,运行jmeter命令就行了。

     但是测试junit就需要向刚才在本地一样,把对应的jar包放到junit目录里,然后其他jar包放到lib目录里。

     建议先做基线测试,就是一个线程分别跑10B 、1k等长度的报文,统计指标数据。

    三 测试指标采集

    (1)tps及Avg指标

    通过上面这个图可以看出两个指标,TPS是12200/s左右,avg平均响应时间是0。 active是线程数。这里跑了200个线程来做测试。可以忽略第一条打印的结果,因为它把系统寻找时间之类的加上去了。

    (2)cpu及mem指标

    用top命令看下内存和cpu使用量: cpu = us+sy = 24.3%      mem = 4.5%

    (3)IO%指标

    这个指标的采集需要借助一个叫netstat的工具。

    nicstat -M -i eth0(网卡名) 1s

     注: watch cat /proc/net/dev   (查看当前linux系统使用网卡,一般流量最大的网卡就是当前使用的)

    98(server)机器上:用top命令看下cpu和mem,然后记录到表。用netstat命令采集IO%(net)。

    (4)其他指标:

    1、磁盘使用量

    也是借助一个叫dstat的工具,查看命令:dstat -d --disk-util 

    2、进程gc情况

    jstat -gcutil 进程pid 1s

    五 JvisualVM 和 java飞行器

    待监测应用打开jvisualvm端口

    示例:

    在wrapper打包的应用中的/etc/wrapper.conf中添加以下三行:

    wrapper.java.additional.25=-Dcom.sun.management.jmxremote.port=8888 #端口可自行修改
    wrapper.java.additional.26=-Dcom.sun.management.jmxremote.ssl=false
    wrapper.java.additional.27=-Dcom.sun.management.jmxremote.authenticate=false #不开启权限认证

    #若需打开飞行器,只需多添加如下两行:

    wrapper.java.additional.28=-XX:+UnlockCommercialFeatures
    wrapper.java.additional.29=-XX:+FlightRecorder

     
    我本地是这样的:配置好了重启项目服务,通过jvisualvm和jmc访问对应接口

    还有一个据说很强大的神器叫JproFilter,可参考以下博客:

    JProfiler性能分析:https://www.cnblogs.com/shoutn/p/7800829.html

    by -- 阿圆这个程序媛
  • 相关阅读:
    【二】MongoDB入门
    【三】MongoDB文档的CURD操作
    【四】MongoDB索引管理
    【五】MongoDB管理之生产环境说明
    【六】MongoDB管理之副本集
    【七】MongoDB管理之分片集群介绍
    【八】MongoDB管理之分片集群实践
    【九】MongoDB管理之安全性
    mysql5.7新特性探究
    19.SSM整合_配置式开发
  • 原文地址:https://www.cnblogs.com/chaos-li/p/9811570.html
Copyright © 2011-2022 走看看