问题描述
最近在做一个系统的性能调优,说实话我没撒经验,用LoadRunner+JProfiler对执行时间和内存进行分析。偶尔发现在执行了一段时间后,一个用户HttpSession可以达到3M还可能更高。这当然和系统中把很多东西都丢到session中有关。因为我没有相关的经验,不知道session中的东西多大会造成系统性能问题。事实上我发现在压力测试的时候,JVM分配1G的内存都不够用,GC很频繁,Application Server的CPU load也几乎100%,所以我怀疑是内存占用有问题,不知道是不是这个session导致的?1个用户3M,100个用户就是300M,还是有点恐怖的。问题补充:这个系统不是我设计的,我接手是为了性能调优。目前用JProfiler来看,几乎什么东西都丢到session了,比如用户信息、权限表、查询条件、甚至查询结果集....我都有点疯了,我干了4年Java Web应用,从来不敢做的事情,这个系统都给做了。这个问题肯定要解决,我只想知道session过大是不是可能导致性能问题,或者有相关调优经验的同学来个点建议
解决方案
一般系统session中存放用户信息、权限信息、计数器等等需要用户从登陆到退出全程有效的信息。不能任何数据都往session中存储,在session有效的期间内会很耗资源,并且容易出现数据查询上的错误,建议分清哪些应该放在session中,哪些用request。
解决方案二:
为什么要把那么多的信息全部放到session中呢?我看除了改程序,就只有让你加内存了!
解决方案三:
哈哈,这样的东西调优?如果有除了加内存以外的办法。。。就继续关注下......
解决方案四:
只保存一个userinfo只是一些简单的数据而以,其它的东西从不放在session~~~楼主一个用户就有3M~~~放什么东西了呢?