java项目性能测试过程记录
一 准备环境和指标
1.主机三台(linux,这里显示的都是伪主机地址):最好用干净的机子,做性能测试的时候别装其他东西在上面跑。
100.22.0.96 部署rpc服务(这里没用到 可以不搞)
100.22.0.97 部署jmeter (这是必须的)
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.28=-XX:+UnlockCommercialFeatures |
---|

还有一个据说很强大的神器叫JproFilter还有一个据说很强大的神器Jprofilter :
JProfiler性能分析:https://www.cnblogs.com/shoutn/p/7800829.html
java项目性能测试过程记录的更多相关文章
- java 项目相关 学习记录
一位资深程序员大牛给予Java初学者的学习路线建议 [任何时期都可以好好看看] https://www.imooc.com/article/8993 https://www.jianshu.com/ ...
- Java项目性能监控和调优工具-Javamelody的学习总结
1.简介: JavaMelody能够在运行环境监测Java或Java EE应用程序服务器.并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http ...
- Java项目性能持续优化中……
尽量使用StringBuilder和StringBuffer进行字符串连接, 参考链接: Java编程中“为了性能”尽量要做到的一些地方
- 利用Perf4j 对java项目进行性能监控
Perf4j 可以对自定义监控范围的java代码进行日志记录,再经统计分析生成所需性能数据.Perf4j 提供了对常用日志工具log4j的扩展以方便与产品集成,它产生的性能数据可被用于生成可视化的性能 ...
- Linux巩固记录(2) java项目的编译和执行
由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了 以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上 ...
- 影响Java EE性能的十大问题(转)
本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE.中间件和JVM技术.他在性能优化和提升方面也有很深刻的见解,下面他将和大家分享一下常见的10个影响Java EE性能问题 ...
- [原创]Java应用性能远程监控系统(C/S架构)
Java应用性能远程监控系统(使用C/S架构) 适用于监控所有Java应用,具有堆内存监控.方法区监控.GC监控.类加载监控.类编译监控与线程监控,提供堆快照下载,线程快照下载.体验网址:http:/ ...
- windows一键部署java项目
windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...
- Java项目中使用log记录日志的一些总结
本文介绍了一下自己在Java项目中使用log的一些总结,从日志的作用.日志的选用.日志级别介绍.日志记录的一些最佳实践几个方面阐述. 日志的作用 主要作用包括: 1.出问题后定位当时问题 2.显示程序 ...
随机推荐
- Java中类似C#中Task.wait()的类CountDownLatch
当主线程开辟多个子线程,而又需要这些子线程都执行完成后再执行主线程后续的操作,在C#中可以通过Task的wait方法来实现,然而在Java中也有类型的类CountDownLatch,具体用法如下: p ...
- 雷林鹏分享:C# 结构(Struct)
C# 结构(Struct) 在 C# 中,结构是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构. 结构是用来代表一个记录.假设您想跟踪图书馆中书的动 ...
- android ------- TCP/IP
TCP/IP 是针对因特网的通信协议. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议 (Transmission Cont ...
- js传输图片路径
数据库中存储数据/commons/img/***.jpg格式的图片路径. "<a onclick=\"showImg(\'"+dataEle.imgPath.rep ...
- selenium chrome 自动加载flash
#coding:utf-8from selenium import webdriverfrom selenium.webdriver.support.select import Selectfrom ...
- linux下对数据库操作
1. mysql -udev -pxxxxxxx // 备注:-u 用户名 -p 密码 2. show databases; // 查看有哪些数据库 3. use datebase; // 使用哪些数 ...
- Leetcode 145
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- SQL Server“复杂”概念之理解
用惯了Oracle的人,接触SQL Server中的概念时,会觉得比较难理解,甚至感觉有点“绕”,这是因为Oracle中将某些其他数据库中存在的概念给简化了,这里就拿两个最常见的概念来举例说明:1.s ...
- 你还有没有印象?腾讯QQ16个版本界面你认识多少?
腾讯公司成立于1998年11月11日(马化腾也曾经戏称“腾讯公司的生日被马云弄成双11购物节了”).1997年,马化腾接触到了ICQ:1998年11月11日,马化腾和同学张志东在广东省深圳市注册成立“ ...
- WebSphere部署应用教程
在WebSphere中应用是部署在“应用程序服务器”,而“应用程序服务器”建立在“节点”上 所以部署应用的几个前提是:要创立好受控server(亦即节点)并加入到控制台中且处于启动(亦即同步)状态:要 ...