tomcat7 cpu 占用率过高调整
2015-01-28 20:03
197 查看
摘要: 通过调整启动脚本
之前在在catalina.sh中简单设置JAVA_OPTS=-Xms1024m -Xmx2048m,没起作用,CPU还是超高,机器内存限制再大也设不了了,转而到启动脚本里设置了这一堆参数,没有一个个的排查,到底哪个参数起作用,但实际效果很明显。
启动脚本将JAVA_OPTS参数设置:
vi /etc/rc.d/init.d/tomcat
补充说明:
-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。可以同时并行多个垃圾收集线程,但此时用户线程必须停止。这个设置报错,jvm不能创建,取消。
-XX:+UseParNewGC:设置年轻代为多线程收集。可与CMS收集同时使用。在serial基础上实现的多线程收集器。
两个都是年轻代的GC,也都是并行GC,区别就是,parallel gc 是提升吞吐量,parnew gc是serial gc的多线程版。
如果还不能解决启动慢的问题:
在$CATALINA_HOME/bin/catalina.sh中加一句:
参见: http://ifeve.com/jvm-random-and-entropy-source/
之前在在catalina.sh中简单设置JAVA_OPTS=-Xms1024m -Xmx2048m,没起作用,CPU还是超高,机器内存限制再大也设不了了,转而到启动脚本里设置了这一堆参数,没有一个个的排查,到底哪个参数起作用,但实际效果很明显。
启动脚本将JAVA_OPTS参数设置:
vi /etc/rc.d/init.d/tomcat
#!/bin/bash # chkconfig: 2345 10 90 # description: Starts and Stops the Tomcat daemon. export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-7.0.53 export JAVA_HOME=/usr/java/jdk1.7.0_55 export JAVA_OPTS="-server \ -Dfile.encoding=UTF-8 \ -Dcatalina.logbase=/home/webapp/logs/tomcat7 \ -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+DoEscapeAnalysis -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:+UseParallelGC -XX:MaxPermSize=512m -Xms1024m -Xmx2048m" export PATH=$JAVA_HOME/bin:$PATH TOMCAT_START=$CATALINA_HOME/bin/startup.sh TOMCAT_STOP=$CATALINA_HOME/bin/shutdown.sh # source function library. . /etc/rc.d/init.d/functions # check that networking is up. [ "${NETWORKING}" = "no" ] && exit 0 # check for tomcat script if [ ! -f $CATALINA_HOME/bin/catalina.sh ]; then echo "Tomcat not valilable..." exit fi start(){ echo -n "Starting Tomcat: " daemon $TOMCAT_START echo touch /var/lock/subsys/tomcat } stop(){ ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' \ | wc | awk '{print $2}' > /tmp/tomcat_process_count.txt read line < /tmp/tomcat_process_count.txt if [ $line -gt 0 ]; then echo -n "tomcat ( pid " ps ax --width=1000 | grep "org.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' echo -n ") is running..." echo echo -n $"Shutting down Tomcat: " daemon $TOMCAT_STOP rm -f /var/lock/subsys/tomcat.pid echo else echo "Tomcat is stopped" fi } restart(){ stop start } status(){ ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' \ | wc | awk '{print $2}' > /tmp/tomcat_process_count.txt read line < /tmp/tomcat_process_count.txt if [ $line -gt 0 ]; then echo -n "tomcat ( pid " ps ax --width=1000 | grep "org.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' echo -n ") is running..." echo else echo "Tomcat is stopped" fi } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 3 start ;; status) status ;; *) echo "Usage: tomcatd {start|stop|restart|status}" exit 1 esac exit 0
补充说明:
-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。可以同时并行多个垃圾收集线程,但此时用户线程必须停止。这个设置报错,jvm不能创建,取消。
-XX:+UseParNewGC:设置年轻代为多线程收集。可与CMS收集同时使用。在serial基础上实现的多线程收集器。
两个都是年轻代的GC,也都是并行GC,区别就是,parallel gc 是提升吞吐量,parnew gc是serial gc的多线程版。
如果还不能解决启动慢的问题:
在$CATALINA_HOME/bin/catalina.sh中加一句:
-Djava.security.egd=file:/dev/./urandom
参见: http://ifeve.com/jvm-random-and-entropy-source/
相关文章推荐
- mysqlCPU占用率过高的问题
- 使用jstack分析java程序cpu占用率过高
- zprofiler三板斧解决cpu占用率过高问题(转载)
- 那些病毒会造成CPU占用率过高
- 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
- 记一次CPU占用率过高
- 解决WinXP系统中CPU占用率过高问题
- java虚拟机CPU占用率过高排查方法
- java应用CPU占用率过高问题的分析
- 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
- system_server等应用CPU占用率过高诊断的一种方法
- 解决开机时svchost.exe的CPU占用率过高导致系统异常缓慢
- java虚拟机CPU占用率过高排查方法
- Linux下xorg进程CPU占用率过高时的一个解决方案
- svchost.exe的CPU占用率过高导致系统异常缓慢
- 谷歌浏览器chrome的CPU占用率过高有三种解决办法
- Cygwin1.dll版本不正确导致cpu占用率过高问题解决
- Android 手机CPU 占用率过高
- 一次线上redis实例cpu占用率过高问题优化