2011-02-25 52 views
1

我在我的应用程序中使用Struts2。当用户数量较少时,它工作正常。 但是实时有大约3000个请求到达应用程序。过了一段时间我的JVM崩溃了。我检查了线程转储,它似乎在执行OGNL表达式时被很多线程阻塞。Struts2性能问题

在挑选时间内,CPu利用率总是在130%左右。请告诉我什么是在高度可扩展的环境中运行stuts2应用程序的最佳方法。

+0

你可以扩展你如何做测试。结果究竟是什么,也许如果你有一些奇怪的OGNL表达式显示它们。如果您使用的是测试框架,请将其添加到此问题标签中,因为您可以在受众群体中获得更多专家测试人员。 – Quaternion 2011-02-25 18:37:13

+0

当您的JVM崩溃时,错误是什么? – 2011-02-25 21:15:37

+0

@Steven:由于JVM中的内存中断,它会崩溃,导致内存中断的原因是很多线程被阻塞。 – BOSS 2011-02-28 06:47:01

回答

0

您正在使用哪个版本的Struuts2? OGNL表达式语言存在一些已知的问题。

遵循struts2的邮件列表,在此线程它可能帮助üOGNL Discussion

最近出现了很多与OGNL的性能提升,从而只需指定Struts2的版本

+0

struts2-core-2.2.1.jar,ognl-3.0.jar – BOSS 2011-02-28 06:42:34

4
  • 让我们来看看这个,默认设置对于struts.ognl.enableExpressionCache

###缓存解析OGNL表达式,但可能会导致内存泄漏

###如果应用程序产生大量不同表情的

struts.ognl.enableExpressionCache =真

  • 或者通过指令Performance Tuning尝试优化您的应用Struts2的。
  • 或者使用Java Melody来监视Struts2应用程序,可以通过添加拦截器来监视Struts2的动作。