linux下java程序使用jprofiler进行压测
背景:要压测服务器承载上限,机器人也写好了,压测完发现登录耗时过长,开始是看协议耗时,直接抓瞎,后续想了想,还是要用直观的工具,最终使用jprofiler,轻松得到瓶颈代码,进行了修改。
1.下载linux版本jprofiler,并解压好
![]()
2.java程序启动参数
#!/usr/bin/env bash
dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
echo "app dir = $dir"CLASS_NAME=com.next1b.nextsvr.main.GameServer
CLASS_PATH=$dir/NextServer.jar:$dir/lib/*
PID=$dir/instance.pidJVM_OPTS="-Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=400m"
JVM_OPTS="${JVM_OPTS} -XX:-OmitStackTraceInFastThrow -XX:+UseStringDeduplication -XX:MaxDirectMemorySize=500m"
JVM_OPTS="${JVM_OPTS} -XX:+AlwaysPreTouch"
JVM_OPTS="${JVM_OPTS} -XX:+SegmentedCodeCache -XX:+HeapDumpOnOutOfMemoryError"
JVM_OPTS="${JVM_OPTS} -XX:HeapDumpPath=$dir/logs -Xlog:gc*:file=$dir/logs/gc.log:time,uptime -verbose:gc"
JVM_OPTS="${JVM_OPTS} -XX:+PrintCommandLineFlags -XX:+PreserveFramePointer -XX:NativeMemoryTracking=detail"
#JVM_OPTS="${JVM_OPTS} -agentpath:/mnt/jprofiler14.0.6/bin/linux-x64/libjprofilerti.so=port=8849,nowait"
JVM_OPTS="${JVM_OPTS} -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:9602"file=`date +%Y%m%d%H%M`
cd $dir#mv console.log console-${file}.log
cat /dev/null > console.log
nohup java $JVM_OPTS -classpath $CLASS_PATH $CLASS_NAME env=DEV >> $dir/console.log &
echo $!>$PID
tail -f $dir/console.log3.安装好jprofiler mac客户端

4.安装时会提示:集成idea,集成下
5.java程序启动
6.运行jprofiler,远程连接输入远程linux的ip,使用root和密码进行登录(登录不成功则看报错信息,是不是远程linux不允许登录的设置)
