JAVA企业级应用TOMCAT实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA企业级应用TOMCAT实战相关的知识,希望对你有一定的参考价值。

JVM优化涉及到两大方面我个人的理解
1.如何分配JVM的内存空间
2.我应该使用什么垃圾回收器
JVM产生的垃圾需要回收、回收有不同的回收器、
JVM的调优需要了解各个垃圾回收机制的原理、
终极目标:降低FULL GC出现的频率  (FULL GC出现会导致应用的暂停服务)


优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:初始堆内存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收集的时间

 使用jconsole.exe来监控jvm

配置文件更改

[tomcat@linux-node1 tomcat]$ vim bin/catalina.sh 
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote # #启用远程监控JMX
-Dcom.sun.management.jmxremote.port=12345 #jmx远程端口,Zabbix添加时必须一致
-Dcom.sun.management.jmxremote.authenticate=false #不开启用户密码认证
-Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.230.130" #运行tomcat服务IP(不要填写错了)

JConsole是一个可执行文件,在java根目录下bin文件;单击bin文件下JConsole.exe运行程序

还能手动执行GC

还有个工具jvisualvm.exe、这个可以同时监控多个

zabbix3.0版本可以利用javaget监听jvm的一些参数

 

以上是关于JAVA企业级应用TOMCAT实战的主要内容,如果未能解决你的问题,请参考以下文章

JAVA企业级应用TOMCAT实战

JAVA企业级应用Tomcat实战

JAVA企业级应用TOMCAT实战

Tomcat企业应用实战

Java企业级电商项目实战 Tomcat集群与Redis分布式

六 java和Tomcat