360SDN.COM

首页/Tomcat/列表

Tomcat监控

来源:爱测未来  2017-09-11 13:38:26    评论:0点击:

本地监控

JConsoleJvisualVM工具可以直观监控TomcatJVM内存、线程、GC等信息。

Windows本地监控很简单,Linux可以借助Linux的远程图形桌面VNC

VNC操作如下:

  1. Linux上安装VNC服务端:

  2. l  yum install tigervnc-server

# yum groupinstall "GNOME Desktop Environment"CentOS 5.x安装GNOME桌面环境)
# yum groupinstall "X Window 
System" "Desktop"CentOS 6.x安装GNOME桌面环境)
# yum groupinstall Xfce
CentOS安装Xfce桌面环境,可选)
# yum install vnc-
server vnc* CentOS 5.x里)
# yum install tigervnc-server tigervnc
CentOS 6.x里)

  • 把远程桌面的用户加入到配置文件中

vi /etc/sysconfigvncservers
使用vi编辑器打开配置文件,在文件中添加下面两行命令
VNCSERVERS="1:root" --
指定远程用户

VNCSERVERARGS[1]="-geometry 1024x768"
 --指定远程桌面分辨率

  • 给远程桌面用户 root 设置密码:vncpasswd

  • 开启VNC端口。iptables防火墙默认会阻止vnc远程桌面,所以需要在iptables允许通过。当你启动vnc服务后,你可以用netstat -tunlp命令来查看vnc服务所使用的端口。使用下面命令开启这些端口:
    vi /etc/sysconfig/iptables
    使用vi编辑器打开配置文件,在文件中添加下面一行命令
    -A RH-Firewall-l-INPUT -p tcp -m tcp --dport 5900:5903 -j ACCEPT

  • 重启防火墙:
     /etc/init.d/iptables restart
    或者直接关闭防火墙:
     /etc/init.d/iptables stop

  • 启动vncservervncserver

  • VNC客户端:

vnc客户端中输入:服务器端IP,然后输入密码。打开JConsoleJvisualVM工具就能直观看到监控信息了。


远程监控

这里再介绍下如何利用JConsole进行远程监控Tomcat JvisualVM类似。因为比较耗性能,一般在进行性能测试时不推荐使用。

  1. 参数配置:

Linux下,tomcat bin/catalina.sh配置:

JAVA_OPTS=”-Xms2048m -Xmx2048m-XX:MaxPermSize=516m -Djava.rmi.server.hostname=192.168.77.159-Dcom.sun.management.jmxremote.port=1090-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false

windows下,tomcat bin/catalina.bat配置:

 set JAVA_OPTS=%JAVA_OPTS%-Xms2048m -Xmx2048m -XX:MaxPermSize=516m -Djava.rmi.server.hostname=192.168.77.159-Dcom.sun.management.jmxremote.port=1090-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false

注意事项:确保指定的端口不被占用,windows下使用netstat -aon|findstr "1090"查看端口是否被占用,另外如果开启了防火墙服务,请确保端口能够透过防火墙访问;

  1. 连接远程虚拟机,启动%JAVA_HOME%\bin目录下的jconsole,输入相关ipport,建立连接

使用命令

有时进行现网性能测试时,可能安装软件或添加jvm远程监控相关参数都很不方便。这时我们可以选择一些jdk自带的监控工具。


jps

查看所有的jvm进程,包括进程ID,进程启动的路径等等。

示例:jps -v

也可以用psps -ef |grep java

jstack

观察jvm中当前所有线程的运行情况和线程当前状态

注意:在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。

示例threaddump: jstack  -l 2203  > threaddump_1.txt

threaddump文件可以用IBM的一个线程分析工具进行分析。

dump 文件里,值得关注的线程状态有:

  死锁, Deadlock 

  等待资源, Waiting on condition

  等待获取监视器, Waiting on monitor entry

  阻塞, Blocked

 

jstat

jstat利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对进程的classloadercompilergc情况。

示例:jstat –gccause –h 15 2203 2000

参数介绍:

-class:统计class loader行为信息 
-compile
:统计编译行为信息 
-gc
:统计jdk gcheap信息 
-gccapacity
:统计不同的generations(包括新生区,老年区,permanent区)相应的heap容量情况 
-gccause
:统计gc的情况,(同-gcutil)和引起gc的事件 
-gcnew
:统计gc时,新生代的情况 
-gcnewcapacity
:统计gc时,新生代heap容量 
-gcold
:统计gc时,老年区的情况 
-gcoldcapacity
:统计gc时,老年区heap容量 
-gcpermcapacity
:统计gc时,permanentheap容量 
-gcutil
:统计gc时,heap情况 

jmap

监视进程运行中的jvm物理内存的占用情况,该进程内存内所有对象的情况,例如产生了哪些对象,对象数量等。

注意:这个jmap使用的时候jvm是处在假死状态的,只能在服务瘫痪的时候为了解决问题来使用,否则会造成服务中断。


1-默认视图

查看连接到进程里的本地类库。jmap [pid]

2-堆视图

堆大小是年轻代、年老代加上PermGen区总和。年轻代包括Eden,S0,S1

jmap–heap [pid]

3-柱状视图

使用柱状视图可以看到哪些对象占用了内存。

jmap–histo [pid] | head -30



jmap使用类型内部名称。如:字符数组会写成 [C

B  byte
C  char
D  double
F  float
S  short
I   int
J  long
Z  boolean
[  
数组,如[I表示int[]
[L+
类名其他对象

[C is a char[]
[S is a short[]
[I is a int[]

[B is a byte[]
[[I is a int[][]

带上live,表示只统计存活对象

 jmap -histo:live 9939 | head -30

 

4-生成dump文件

产生一个HeapDump文件,此为生成heapdump文件的重要参数。
例: jmap -dump:format=b,file=0612-hd_drlgz-v50.hprof 50515
可以使用MATIBM的一个内存分析工具分析导出的内存文件。

jinfo

观察进程运行环境参数,包括Java System属性和JVM命令行参数。

参考网址

http://www.ha97.com/4634.html

https://my.oschina.net/freegarden/blog/286372

阅读原文

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权