最近在做performance tuning的时候,发现struts2的标签和ognl解析器在高并发的情况下表现出来的性能很糟糕。同时在做thread dump分析的时候发现,有很多block的线程。
修改前的分析截图:
修改后的分析截图:
调用比较分析:
通过截图分析,现在的jsp加载好了很多,基本上提升了10倍的性能。很是令人惊喜。
解决方案:
将struts2的标签+ ognl的改成jstl+el的方式进行处理。
总结:
Struts2 引入了根元素(ActionContext)值栈之后,通过ognl来获取值栈(或者是非值栈)的信息,给开发带来了很大的便利,这个特性也是一把双刃剑,通过性能换便利,对性能调优,简直是个很大的诟病。