天天看点

tomcat完结篇,JVM状态监控与内存调优。

       本篇合适对tomcat和JVM有一定了解的朋友。

常用的内置变量介绍:

CATALINA_BASE  //用于设定可以具有写权限或者自定义部分的文件存放位置,适用场景,需要在一节点上启动多个tomcat实例,就可以定义多个CATALINA_BASE。

CATALINA_OPTS //定义JVM的运行属性

JAVA_OPTS  //定义多个JVM相同运行属性。

JAVA_HOME  //用于设定java或JDK运行时候的本地位置。

JRE_HOME   //这是一个JAVA_HOME的别名。

了解配置文件:

/usr/local/tomcat/conf/catalina.policy  用于定义catalina安全策略 

/usr/local/tomcat/conf/catalina.properties 用于定义catalina属性信息

如何调整JVM堆内存。

我们先通过manager-gui看下当前堆内存大小.

<a href="http://s3.51cto.com/wyfs02/M02/46/10/wKioL1PtvGyRrIhKAAIvsmApZZU283.jpg" target="_blank"></a>

当前最大内存239.75M我们来将它调整到512M。

定义属性信息想要在启动的时候生效,需要定义在/bin/catalina.sh 脚本中。

编辑$CATALINA_HOME/bin/catalina.sh,搜索JAVA_OPTS,找到提示段。

使用以下指令定义:

 JAVA_OPTS="$JAVA_OPTS -Xmx512M"

如图:

<a href="http://s3.51cto.com/wyfs02/M00/46/11/wKiom1Ptv06hBOXwAAGjdeBuFY8631.jpg" target="_blank"></a>

然后重启tomcat服务。

查看状态

<a href="http://s3.51cto.com/wyfs02/M00/46/11/wKiom1PtwI_SUdddAAGXWq3lUTI566.jpg" target="_blank"></a>

指令介绍:

    -Xms 128M 设定JVM运行的最小内存 

    -Xmx 256M 设定JVM运行的最大内存

    -XX:MaxNewSize  定义新生代最大内存空间

    -XX:MaxPermSize 定义持久带最大内存空间

接下来看看状态监控

jstat是一款JVM监控工具我们来看看他的用法:

jstat -&lt;option&gt; &lt;vmid&gt; 显示频率 [&lt;count&gt;]

jstat -class pid:显示加载class的数量,及所占空间等信息。  

jstat -compiler pid:显示VM实时编译的数量等信息。  

jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。  

jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使 用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。  

jstat -gcnew pid:new对象的信息。  

jstat -gcnewcapacity pid:new对象的信息及其占用量。  

jstat -gcold pid:old对象的信息。  

jstat -gcoldcapacity pid:old对象的信息及其占用量。  

jstat -gcpermcapacity pid: perm对象的信息及其占用量。  

jstat -util pid:统计gc信息统计。  

jstat -printcompilation pid:当前VM执行的信息。 

例:

jstat -gc 8825 1s 5

<a href="http://s3.51cto.com/wyfs02/M00/46/14/wKioL1PtwzySFOIfAAIO-JIpgJU797.jpg" target="_blank"></a>

参数详解:

S0:Heap上的 Survivor space 0 段空间大小KB

S1:Heap上的 Survivor space 1 段空间大小KB

S0U:Heap上的 Survivor space 0 段已使用空间大小KB

S1U:Heap上的 Survivor space 1 段已使用空间大小KB

EC:显示现在Eden空间大小KB

EU:显示现在Eden已用空间大小KB

OC:显示现在old空间大小KB

OU:显示现在old已用空间大小KB

PC:显示现在持久带空间大小KB

PU:显示现在持久带已用空间大小KB

YGC:从程序启动到采样时发生Young GC的次数

YGCT:Young GC所用的时间(单位秒)

FGC:从程序启动到采样时发生Full GC的次数

FGCT:Full GC所用的时间(单位秒)

GCT:用于垃圾回收的总时间(单位秒)

再介绍一个图形化监控工具VisualVM  + Visual GC

VisualVM下载地址:http://visualvm.java.net/download.html

如果机器在连通外网的情况下,可以添加VisualGC插件,显示更丰富的信息。

monitor

<a href="http://s3.51cto.com/wyfs02/M02/46/1F/wKioL1Pt2I6CisfXAAN2XKaAcK8645.jpg" target="_blank"></a>

Visual GC 

<a href="http://s3.51cto.com/wyfs02/M02/46/20/wKioL1Pt2O_Tu7p0AAPkhPnz8RM595.jpg" target="_blank"></a>

本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1540695