jsp session配置对web应用的影响
以前公司做了一个web项目。发布以后,随着访问量的逐渐增大,发现jvm的内存使用比较多,full gc比较频繁,而且full gc后old区的大小变化不大。刚开始以为是jvm虚拟机的各项参数配置的不合理,我们就对jvm虚拟机的参数进行调整,调整后发现gc还是非常的频繁。
funll gc频繁非常影响性能,我们把jvm的heapdump( java 堆栈的快照)文件导出来,采用ibm heapanalyzer 的分析工具进行分析。经过分析发现堆中存在很多session对象。这些session对象占用空间比较大大,而且占堆内存的比例很大。很明显问题是出现在session上面。
因为客户端访问时,当服务端中没有该客户端的session,将会生成session对象,由于项目中的session过期时间设置的比较大,所以当访问量比较大的时候,产生的session对象就非常的多,导致占用了很大的堆内存。
以前session设置为30分钟,后来设置为1分钟,代码如下:
<!-- 设置session失效,单位分 --> <session-config> <session-timeout>1</session-timeout> session-config>
把session过期时间设置为1分钟后,进行压力测试,发现full gc减少了很多,而且jvm的内存的用量也减少了很多。从这个结果得出结论设置
合理的session过期时间是非常有必要的。
注:由于这个web工程中没有任何信息放入到session中,所以可以设置session时间很短。如果session中放了信息,那么大家就需要
自己考虑设置一个合理的过期时间。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
如对本文有疑问, 点击进行留言回复!!
springmvc之ResponseBody响应json数据遇到的错误及解决
uni-app 后台升级 静默升级 uniapp 后台更新 静默更新 在线升级
SpringBoot多Module启动报错Could not transfer metadata
Hibernate项目报错:Cannot call sendError() after the response has been committed
网友评论