一 准备环境和指标

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

 100.22.0.98  部署自己的项目服务
 100.22.0.96  部署rpc服务(这里没用到 可以不搞)
 100.22.0.97  部署jmeter (这是必须的)
 
2.统计指标:
TPS  Avg time(ms) cpu% mem% IO%(net) cpu%(client) IO%(client)

errors

注: 还可以统计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 Files\jmeter\apache-jmeter-3.3\lib\junit

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

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

3.部署环境

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

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

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

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

三 测试指标采集

97(client)机器上是这样的:

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

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

IO%(client) 这个指标的采集需要借助一个叫netstat的工具。

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

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

还有一个叫磁盘使用量,也是借助一个叫dstat的工具,查看命令如下

dstat -d --disk-util

98(server)机器上

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

五 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还有一个据说很强大的神器Jprofilter :

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

java项目性能测试过程记录的更多相关文章

  1. java 项目相关 学习记录

    一位资深程序员大牛给予Java初学者的学习路线建议  [任何时期都可以好好看看] https://www.imooc.com/article/8993 https://www.jianshu.com/ ...

  2. Java项目性能监控和调优工具-Javamelody的学习总结

    1.简介: JavaMelody能够在运行环境监测Java或Java EE应用程序服务器.并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http ...

  3. Java项目性能持续优化中……

     尽量使用StringBuilder和StringBuffer进行字符串连接, 参考链接: Java编程中“为了性能”尽量要做到的一些地方

  4. 利用Perf4j 对java项目进行性能监控

    Perf4j 可以对自定义监控范围的java代码进行日志记录,再经统计分析生成所需性能数据.Perf4j 提供了对常用日志工具log4j的扩展以方便与产品集成,它产生的性能数据可被用于生成可视化的性能 ...

  5. Linux巩固记录(2) java项目的编译和执行

    由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了 以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上 ...

  6. 影响Java EE性能的十大问题(转)

    本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE.中间件和JVM技术.他在性能优化和提升方面也有很深刻的见解,下面他将和大家分享一下常见的10个影响Java EE性能问题 ...

  7. [原创]Java应用性能远程监控系统(C/S架构)

    Java应用性能远程监控系统(使用C/S架构) 适用于监控所有Java应用,具有堆内存监控.方法区监控.GC监控.类加载监控.类编译监控与线程监控,提供堆快照下载,线程快照下载.体验网址:http:/ ...

  8. windows一键部署java项目

    windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...

  9. Java项目中使用log记录日志的一些总结

    本文介绍了一下自己在Java项目中使用log的一些总结,从日志的作用.日志的选用.日志级别介绍.日志记录的一些最佳实践几个方面阐述. 日志的作用 主要作用包括: 1.出问题后定位当时问题 2.显示程序 ...

随机推荐

  1. iterm2 + zsh + oh-my-zsh +autojump

    iterm2  + zsh  +  oh-my-zsh +autojump 升级你的命令行工具,这个我折腾了好久,才明白了各个之间的关系. 1.先下载一个item2 首先你需要下一个iterm2,不要 ...

  2. POP3、SMTP和IMAP介绍和设置

    什么是POP3.SMTP和IMAP? 参照:http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html 用于 Outlook 的 POP 和 IMAP 电 ...

  3. mysql索引优化比普通查询速度快多少

    mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...

  4. idea ----> 学习笔记

    使用的是社区版的idea 1. 2.关键点之二:配置artifacts.参照 <使用IDEA2017创建java web+Maven项目>http://blog.csdn.net/love ...

  5. es-aggregations聚合分析

    聚合分析的格式: "aggregations" : { "<aggregation_name>" : { "<aggregation ...

  6. Centos7.3安装和配置jre1.8转

      在正式环境里 我们可以不安装jdk ,仅仅安装Java运行环境 jre即可: 第一步:下载jre 我们去oracle官方下载下jre http://www.oracle.com/technetwo ...

  7. set unused的用法(ORACLE删除字段)

    set unused的用法(ORACLE删除字段) 一.问题 现场有一张大数据量的分区表,数据量在10G以上.因某种原因需要删除其中的某些字段.如果直接用alter table1 drop (colu ...

  8. MySql(七)多表查询

    十一.多表查询 新建两张表:部门表(department).员工表(employee) create table department( id int, name varchar(20) ); cre ...

  9. 基于Vue + webpack + Vue-cli 实现分环境打包项目

    需求由来:我公司项目上线发布至服务器分为三个环境分别为测试环境.预发布环境.生产环境:前期做法是项目通过脚步打包时由脚步把域名和后缀名之类的全部替换成要发布的环境所需要的,因为我公司的项目比较大由许许 ...

  10. Linux下的Nginx的配置+Tomcat启动

    Linux下的Nginx的配置 首次如果你只仅主机模式,那么请你切换到桥接模式或者net模式. 1.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc ...