2012-02-24 55 views
0

我一个Struts1应用程序转换为Struts2。作为开始,我只移植了一些操作,以了解它们在Struts2中的行为。其中一个操作每秒发送一次由客户端发送的Ajax请求。在当前的Struts1实现中,请求需要大约10-15毫秒才能执行,我可以在Firebug中看到它。 Struts2版本现在需要超过250毫秒。我将分析拦截器添加到操作中,我可以看到大部分时间都用于设置操作的执行。在拦截器上花费的时间可以忽略不计。Struts2的性能

难道正常吗?

在此先感谢您的帮助。

回答

1

follwing的步骤,

  1. 使用struts.dev = “假” 关闭发展模式;
  2. 创建自己的默认interceptorStack哪些具体到项目,并删除不使用unneccesary拦截。
  3. 如需进一步信息,请参考以下链接struts.apache.org/2.2.3/docs/performance-tuning.html
  4. ,并且可以使用定时器拦截所谓定时器找到行动的执行时间。

  5. ,也是我试图与JSTL,OGNL标签来比较jsp页面渲染时间的性能。在我的情况下,OGNL取得了最佳表现。

+0

“struts.dev = false”做到了。我现在回到我之前使用Struts1的时机。非常感谢。 – 2012-02-25 12:26:55

1

有基准由你提到的performance.The一个应用程序的不同方面似乎令人非常震惊的差别是有些25倍。 不确定你设置Action的执行是什么意思?所以它很难提出任何特别的事情。 我们喜欢9-10 S2应用程序,而且目前它们都没有任何性能问题。

我的建议是使用一些分析工具,并得到日其特定块导致应用程序很慢,你身边总是可以按照提示在其他答案提示信息。

是否使用的是S2的版本

+0

这就是我所说的“建立行动的执行”。从剖析拦截器:'[0ms] - 创建DefaultActionProxy:[0ms] - actionCreate:currenttime [359ms] - invoke:[359ms] - 拦截器:异常......所有执行时间都花在创建操作上。 – 2012-02-25 13:59:20

+0

@ D.Laroche:你的问题我相信已经解决了,因为S2在开发模式时倾向于为每个请求重新加载每个配置和其他东西 – 2012-02-25 15:01:15