【问题标题】:Performance degradation with JSF, Spring, Hibernate applicationJSF、Spring、Hibernate 应用程序的性能下降
【发布时间】:2013-12-12 15:28:07
【问题描述】:

我正在开发由以下技术(JSF、Spring、Hibernate、MySQL、MongoDB、Elasticsearch、Jetty 服务器和 Tomcat)开发的 Web 应用程序。我创建了一个压力测试来模拟一个用户使用的应用程序。在测试场景中,我正在对 4 个并行用户进行压力测试,同时以第 5 个用户的身份登录并测量某些活动的系统响应时间。如果我们将压力时间不运行时的响应时间表示为 T,运行压力测试 5 分钟后响应时间为 ~2xT,30 分钟后为 ~5xT,45 分钟后为 ~10-15xT。

1 小时后,我停止了测试,等待了 25 分钟,直到内存堆小于 200mb 并且 CPU 使用率接近 0%,性能略有改善,但不会太多(~7T)。测试停止 1 小时后没有任何变化。

我的 PC 有 8GB 的​​ RAM,我使用 -Xms512m -Xmx4092m -XX:PermSize=512m -XX:MaxPermSize=512m 运行应用程序,根据我从 JVisualVM 和 JProfiler 中找到的信息,我不这么认为是内存泄漏问题。但是,我不确定还有什么问题。 我希望有人能指出造成如此巨大的性能下降的可能原因是什么,或者我应该在哪里寻找它。

提前致谢。

【问题讨论】:

  • 如果没有来自 JProfiler 等的一些代码或结果,很难看到发生了什么。您可能在 gc(太多或太少)、事务设置、错误 JDBC 设置等方面存在问题。目前很难判断。
  • 作为@M。 Deinum 告诉,检查您的应用程序配置文件并打开数据库事务。您实际上是在检查内存状态,但忘记了问题可能出在其他层。
  • 我从这些 gc 日志goo.gl/jqWufP 中看不到任何问题,尽管我不是这方面的专家。数据库连接似乎工作正常,使用后所有连接都关闭。测试停止后释放内存。

标签: performance spring hibernate jsf stress-testing


【解决方案1】:

在分析了应用程序的所有方面后,我发现 Mojarra 是性能下降的主要原因。 Ajax 发布响应时间更长,而后端初始化在压力测试后保持不变。从 Mojarra 2.1.9 迁移到 2.2.0 后,问题消失了,我认为这与 JSF 页面的复杂性以及 Mojarra 如何处理一页上的大量组件有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多