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
浙公网安备 33010602011771号