我正在开发由以下技术开发的Web应用程序(JSF,Spring,Hibernate,MySQL,MongoDB,Elasticsearch,Jetty服务器和Tomcat)。我创建了一个压力测试,模拟一个用户使用的应用程序。在测试场景中,我正在为4个并行用户运行压力测试,同时以第5个用户身份登录并测量某些活动的系统响应时间。如果我们将应力时间未运行的响应时间设为T,则运行5分钟后应力测试响应时间约为2xT,30分钟后约为5xT,45分钟后约为10-15xT。
1小时后我停止了测试,等了25分钟,直到内存堆少于200mb,CPU使用率接近0%,性能略有提升,但不是太多(~7T)。测试停止后1小时没有任何改变。
我的电脑有8GB的RAM,我使用-Xms512m -Xmx4092m -XX运行应用程序:PermSize = 512m -XX:MaxPermSize = 512m,根据我从JVisualVM和JProfiler中找到的,我不认为这是内存泄漏问题。但是,我不确定还有什么问题。 我希望有人可以指出造成这种巨大性能下降的可能原因,或者我应该在哪里寻找它。
提前致谢。
答案 0 :(得分:2)
在分析了应用程序的所有方面后,我发现Mojarra是性能下降的主要原因。 Ajax post响应时间较长,而压力测试后后端初始化保持不变。从Mojarra 2.1.9迁移到2.2.0之后,问题就消失了,我认为这与JSF页面的复杂性以及Mojarra如何在一个页面上处理大量组件有关。