JAVA_OPTS以及Jconsole的使用

JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m"

-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始Heap堆大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间
提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

参数说明:


-server:一定要作为第一个参数,在多个CPU时性能佳


-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些


-Xmx:java heap最大值,使用的最大内存


-XX:PermSize:设定内存的永久保存区域


-XX:MaxPermSize:设定最大内存的永久保存区域


-XX:MaxNewSize:


+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。


-Xss:每个线程的Stack大小


-verbose:gc 现实垃圾收集信息


-Xloggc:gc.log 指定垃圾收集日志文件


-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一


-XX:+UseParNewGC :缩短minor收集的时间


-XX:+UseConcMarkSweepGC :缩短major收集的时间


提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

 jconsole监控

需要apache-tomcat-7.0.79/lib下放入catalina-jmx-remote.jar包

 

vim catalina.sh

在 文件中找到----- Execute The Requested Command --这一行,在这一行上面设置如下代码:

if [ "$1" = "start" ];then
    echo "set console";
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.100.0.18 -Dcom.sun.management.jmxremote.pwd.file=/usr/java/jdk1.7.0_71/jre/lib/management/jmxremote.password"
else
    echo "no startup";
fi;

 

配置完成后需要重新启动

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/usr/java/jdk1.7.0_71/jre/lib/management/jmxremote.password

这个为密码文件

chmod 600 jmxremote.password

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=true-Djava.rmi.server.hostname=10.100.0.18 -Dcom.sun.management.jmxremote.pwd.file=/usr/java/jdk1.7.0_71/jre/lib/management/jmxremote.password"

 

jmxremote.password文件

# Following are two commented-out entries. The "measureRole" role has
# password "QED". The "controlRole" role has password "R&D".
#
monitorRole QED
controlRole chenjj

 

查找指定端口并kill

[root@CentOS bin]# lsof -i:12345
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4094 root 16u IPv6 21219 0t0 TCP *:italk (LISTEN)
java 4094 root 136u IPv6 21234 0t0 TCP mysql-r.novalocal:italk->10.100.0.222:61654 (ESTABLISHED)
[root@CentOS bin]# kill 4094

 

代码解释:

-Dcom.sun.management.jmxremote.port=12345//连接端口,自定义不要与已有的端口冲突

-Dcom.sun.management.jmxremote.rmi.port=6969  //如果不能连接尝试新增这个

-Dcom.sun.management.jmxremote.authenticate=false //不需要密码登陆

-Dcom.sun.management.jmxremote.ssl=false  //不需要安全证书

-Djava.rmi.server.hostname=10.100.0.18"//这个ip是自己服务器的外网ip

 

posted on 2018-11-20 16:09  小白君的成长  阅读(797)  评论(0)    收藏  举报