我们成功地将Web应用程序从Weblogic迁移到了tomcat 7。 Web应用程序使用。
构建当我们迁移到Tomcat时,我们开始使用DBCP。但是考虑改为Tomcat JDBC Connection池。请建议这会有所帮助。
应用程序必须在服务器端执行一些繁重的事务。
但是tomcat无法提供我们在weblogic中获得的性能和稳定性。
在tomcat上运行的GC线程太多,这会导致应用程序挂起。几乎全部时间的2/7用于GC。
这是JVM初始化字符串
JAVA_OPTS="$JAVA_OPTS -server -Xms120G -Xmx120G -Xmn60G -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxNewSize=40G -XX:NewSize=40G -Xloggc:$CATALINA_HOME/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+DisableExplicitGC -XX:+CMSClassUnloadingEnabled -XX:+UseLargePages -XX:LargePageSizeInBytes=1200m"
请帮我调整tomcat以获得更好的性能和稳定性。
答案 0 :(得分:3)
一些问题立即跳出来:
如果我们看一下您指定的选项:
-server
-Xms120G
-Xmx120G
-Xmn60G
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:MaxNewSize=40G
-XX:NewSize=40G
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+DisableExplicitGC
-XX:+CMSClassUnloadingEnabled
-XX:+UseLargePages
-XX:LargePageSizeInBytes=1200m
它读起来就像一个读过太多“Java性能”博客的人。如果你无法解释每个选项的作用以及为什么你把它作为参数添加,请删除选项。
通常情况下,JVM可以很好地处理自己 - 通常可以做出更好的决定,例如它需要多少伊甸园空间等。如果你要设置比堆和perm gen大小更多的东西(甚至那么......)你真的需要知道你在做什么......
不幸的是,没有神奇的设置,如果您的应用程序特别繁重,尤其如此。
从一组实际的基本设置开始,使用JVisualVM,JMeter,MAT等工具。查看应用程序行为的概述。记录性能,堆使用情况,并发线程,吞吐量(峰值和平均值),执行垃圾收集所花费的时间以及应用程序稳定性的指标。每次进行更改时,记录相同的指标并记录结果。最终,您将正确调整应用程序,并了解每个设置是否确实对性能产生了积极影响。