一.linux 自带命令查看性能等。
(1)top -1 查看 cpu 使用情况,占到162%
top - 10:28:00 up 12 days, 17:00, 8 users, load average: 0.32, 2.01, 2.64
Tasks: 204 total, 1 running, 203 sleeping, 0 stopped, 0 zombie
(2)free 查看内存,使用超过16G(累积出来的)
(3)ps cx | grep java
kill -3 pid 强制显示该java 进程的线程信息
发现 39个blocked进程
grep "BLOCKED" jboss_stdout.log -wc
TIMED_WAITING是主动的有时间的waiting,是没问题的. 很多线程并发时,RUUNBLE较多的集中在同样的线程上,就会有问题的。
(4)netstat -an| grep CLOSE_WAIT 和上面的作用一样的
netstat -an| grep WAIT
(5) 查看并行的进程
netstat -an|grep EST|wc -l
查看数据库连接数
netstat -an|grep 1521|wc -l
(6)jstat -gcutil 线程 2000 监控堆栈回收情况
这个是java 自带的便捷工具 -gcutil 能够看到正常的回收情况,YGC应该是每次刷新都增加的,而对应于old区的FGC会较长时间执行一次。 占用率在40%-50%是正常的。
二.使用java 自带jconsole 监控内存
修改了 jboss 启动脚本的run.sh 增加配置端口9999
JAVA_OPTS="$JAVA_OPTS -Dprogram.name=$PROGNAME -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom
.sun.management.jmxremote.ssl=false"
注意:如果在run.sh 增加了这段配置,不要再在jbossctl再加一次,否则会被run.sh
覆盖掉,导致你找不到原因的连接不上。
增加了 jboss 启动项 jbossctl 的配置增加
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
直接运行里面执行jconsole 数据远程连接地址端口 10.20.147.59:9999 就可以了
如果内存短期内是在不断的波动略有上升趋势的,长时间执行时会有周期性的FGC,内存使用会突然下降下来,所以一般运行两个小时会有2-4个锯齿形状的线条,在所有压力测试完成后要能够正常回收,回收到300-400 M 就比较正常了。
三.Jboss 自带的工具
使用jboss 自带的jmx 进行一些辅助内存回收,辅助查看是否存在内存泄露
JMX服务可以通过HTTP、RMI、SNMP等多种协议进行访问,使其适合作为一个网络管理、监控平台的技术架构。看下是否存在内存泄露 别的产品线700M 我们占用2G多
http://10.20.147.59/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Atype%3DServer
四.查看blocked 线程
grep 'BLOCKED' jboss_stdout.log –wc 可以查看下有多少BLOCKED的线程
NEW
至今尚未启动的线程处于这种状态。
RUNNABLE
正在 Java 虚拟机中执行的线程处于这种状态。
BLOCKED
受阻塞并等待某个监视器锁的线程处于这种状态。
WAITING
无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。
TIMED_WAITING
等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。
TERMINATED
已退出的线程处于这种状态。
五.Jmeter
QA性能测试阶段使用了Jmeter,并部署到性能测试环境(linux)下测试
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现
六.Jprofile的监控
JProfiler 是一个著名的用于 java 系统监控分析的软件,功能很强大。
通过对CPU的监控,可以明显看出在哪些地方消耗的时间较多,性能较差 ,通过对VM的监控,可以观察JBOSS内存使用情况
七.webTrace 监控
WebTrace 使用不具体讲拉.