随笔-50  评论-55  文章-8  trackbacks-0

      性能往往出现在你做容易忽略的地方!
      最近开发了一个WML服务端,部署在tomcat6.0,默认内存64M。做压力测试,用LR每秒跑50个用户并发,结果2小时后内存的永久区就满了,且不回收,查程序,感觉任何可以优化的地方都已经优化了,最后穷尽的办法,还是老样子。最好还是感觉我们公司的测试人员NB,发现java.util.concurrent.ConcurrentHashMap$Segment的对象越来越多,经网上资料分析,极有可能是session堆积造成的。这个时候才恍然大悟,因为压力测试的时候,都没模拟新的用户,每次访问服务端都会创建一个新的session对象,保存在服务器端,如果session有效期不过期,那么就一直保存着,知道内存耗尽。只要知道问题的所在,就比较容易解决问题了。我们都知道session的过期时间是在web.wml里面设置,原来我设置了一天,现在改成30分钟,不再出现内容消耗的情况了,谢天谢地谢测试。
<session-config>
  <session-timeout>30</session-timeout>
 </session-config>
      得出的结论是,如果想保存session时间久一点,那么设计tomcat的内存大一点,防止请求量的情况出现内存耗尽。如果session在测试中用到不多或者失效性不强,没有必要加内容,直接修改wen.xml即可。
     附上网上一个“专家”的分析,http://ddupnow.javaeye.com/blog/621619

posted on 2010-04-16 15:04 蒋家狂潮 阅读(2414) 评论(3)  编辑  收藏 所属分类: JWeb

评论:
# re: J2EE压力测试的性能问题 2010-04-17 22:09 | stone2083
为什么不考虑使用JSESSIONID,来模拟更真实的用户并发情况?  回复  更多评论
  
# re: J2EE压力测试的性能问题 2010-04-18 15:27 | 俏物悄语购物网站
是大方的师傅  回复  更多评论
  
# re: J2EE压力测试的性能问题 2010-04-22 08:59 | hsihao
30分钟……  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: