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中放了信息,那么大家就需要
自己考虑设置一个合理的过期时间。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
我正在寻找一些关于为使用java运行的Web应用程序设置mongoDB的正确方法的建议。从mongoDB教程中,我了解到我应该只有一个Mongo类的实例。 Mongo类被设计成线程安全的,并在线程之间共享。通常,您只为给定的DB集群创建一个实例,并在应用程序中使用它。 所以我有一个单例提供者(我使用guice进行注入) 每当我必须在我的webapp中使用mongo时,我就会注入提供者并获得相同的m
对于那些在生产中运行Go后端的人: 运行Go web应用程序的堆栈/配置是什么? 除了人们使用标准库NET/HTTP包来保持服务器的运行之外,我还没有看到关于这个主题的很多东西。我读过使用Nginx向Go服务器传递请求-Nginx with Go 这在我看来有点脆弱。例如,如果计算机重新启动(没有附加配置脚本),服务器将不会自动重新启动。 是否有更坚实的生产设置? 关于我的意图--我正在为我的下一
问题内容: 是否有任何模式或最佳实践可用于简化跨多个环境的Java Web应用程序的配置文件更改。例如JDBC URL,SOAP端点等。 为了帮助澄清我的问题,我使用了一些大型Java Web应用程序作为背景知识,这些Web应用程序在任何给定的发行周期内都会在6种不同的环境中移动。开发,集成,质量保证,性能,并最终部署到多个生产服务器。在每种环境中,配置都需要更改。目前,每个部署的大多数配置更改都
问题内容: 对于那些在生产环境中运行Go后端的人: 运行Go Web应用程序的堆栈/配置是什么? 除了人们使用标准库net / http包来保持服务器运行之外,在该主题上我还没有看到太多内容。我阅读了使用Nginx将请求传递到Go服务器的信息- 使用Go的 Nginx 在我看来,这有点脆弱。例如,如果重新启动计算机(没有其他配置脚本),服务器将不会自动重新启动。 是否有更可靠的生产设置? 除了我的
app.json 用于对应用进行全局配置,设置路由、窗口表现、渲染方式等。 以下为默认配置示例: { "routes": [ { "path": "/", "source": "pages/Home/index" } ], "window": { "defaultTitle": "Rax App 1.0" } } 完整配置项如下: 属
应用配置包括配置项和保密字典。 配置项 配置项以键值对的形式保存无需加密的配置信息。 保密字典 保密字典以键值对的形式保存加密的配置信息。