gpt4 book ai didi

java - Weblogic到tomcat迁移性能问题

转载 作者:行者123 更新时间:2023-11-28 22:09:07 25 4
gpt4 key购买 nike

我们成功地将 Web 应用程序从 Weblogic 迁移到 tomcat 7。Web 应用程序是使用构建的。

  1. Spring
  2. Jsp
  3. 使用 weblogic 数据源

当我们迁移到 Tomcat 时,我们开始使用 DBCP。但是想换成Tomcat JDBC Connection pooling。请建议这是否有帮助。

应用程序必须在服务器端执行一些繁重的事务。

但是 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 以获得更好的性能和稳定性。

最佳答案

几个问题立马跳出来:

  • 您做了哪些概要分析和分析让您相信您需要 120 GiB 的堆空间?
  • 您是否了解 GC 的影响一个非常大的堆?
  • 您是否有足够的物理内存用于整个 Java 进程,而不仅仅是堆?
  • 你为什么明确将年轻代的最大大小设置为 60 GiB,并将新的设置为 40 GiB?

如果我们查看您指定的选项:

-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 会很好地处理自己 - 通常会做出更好的决定,比如它需要多少 eden 空间等。如果你要设置比堆和 perm gen 大小更多的东西(即使那样......)你真的需要知道你在做什么......

不幸的是,没有神奇的设置,如果您的应用程序特别繁重,则尤其如此。

从一组现实的基础设置开始,使用 JVisualVM、JMeter、MAT 等工具。查看应用程序行为的概述。记录有关性能、堆使用情况、并发线程、吞吐量(峰值和平均值)、垃圾收集时间和应用程序稳定性的指标。每次进行更改时,记录相同的指标并记录结果。最终,您将正确调整应用程序,并了解每个设置是否真的对性能产生积极影响。

关于java - Weblogic到tomcat迁移性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com