Arthas分析性能问题
线上API服务运行一段时间,某一接口越来越慢,线上没有打印详细日志。
采用Alibaba开源的Java诊断工具,线上服务非springboot框架搭建、采用ssm框架部署jetty容器。
-
安装
通过http://arthas.gitee.io/下载arthas-bin.zip,解压安装到
/opt/arthas目录下如图:
-
修改jetty.sh脚本,增加jvm参数
-XX:+StartAttachListener -
执行命令,启动arthas
java -jar arthas-boot.jar
如果报错:
Connect to telnet server error: 127.0.0.1 3658
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:188)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:209)
at com.taobao.arthas.client.TelnetConsole.process(TelnetConsole.java:309)
at com.taobao.arthas.client.TelnetConsole.main(TelnetConsole.java:166)
Usage: arthas-client [--help] [-c <value>] [-f <value>] [-t <value>] [-w
<value>] [-h <value>] [target-ip] [port]
Arthas Telnet Client
EXAMPLES:
java -jar arthas-client.jar 127.0.0.1 3658
java -jar arthas-client.jar -c 'dashboard -n 1'
java -jar arthas-client.jar -f batch.as 127.0.0.1
检查jetty进程所属用户
执行以下步骤
- chow -R jetty.jetty /opt/arthas
- su jetty
- java -jar arthas-boot.jar
进入:
输入要跟踪的方法:
trace com.shanda.sc.controller.EmailxxxController emailfunc
结果: