查看JAVA进程中哪个线程CPU消耗最高_JAVA本地远程连接linux程序监控状态
转载:http://www.cnblogs.com/tankaixiong/p/5995759.html
转载:http://www.cnblogs.com/tankaixiong/p/5984023.html
查看JAVA进程中哪个线程CPU消耗最高
一,在centos linux 上查看进程占用cpu过高
top
shift+h
查看哪个进程程消耗最高
二,查看JAVA进程中哪个线程消耗最高
2.1 导出java运行的线程信息
jstack 进程id(jps查看)
jstack 进程id > ps.txt
jstack -l 进程id (窗口打印)
//另外还有一种方式
如果启动方式如下:
nohup java -classpath conf/:my.jar com.tank.manClass>./log.out 2>&1 &
则执行: kill -3 PID,进程信息会输出到/log.out
2.2 查找最消耗cpu的java线程
jps
找到java进程PID
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
通过%CPU和 TIME,判断占用的线程TID
找到TID,转换成16进制,然后在上面(jstack 进程id > ps.txt)导出的文件中搜索,就可以定位到具体的线程,类。
JAVA本地远程连接linux程序监控状态
环境:
1.本地window
2.程序部署在centos
一,启动访问权限安全守护程序
新建文件:jstatd.all.policy ,注意路径
grant codebase "$JAVA_HOME/lib/tools.jar" { permission java.security.AllPermission; };
启动:
screen jstatd -J-Djava.security.policy=jstatd.all.policy
二,JAVA启动参数设置
JAVA_OPTS='-Dcom.sun.management.jmxremote.port=5656 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'
注:
- -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
- -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl
- -Dcom.sun.management.jmxremote.authenticate=false 指定了JMX 是否启用鉴权(需要用户名,密码鉴权)
2,3两个是固定配置,是 JMX 的远程服务权限的
三,可能遇到的问题
3.1 如果遇到无法远程连接问题。
查看 hostname -i
hostname对应的IP是不是远程连接的IP地址,如果不是则查看 cat /etc/host 添加ip 对本机对外IP的映射