【发布时间】:2015-07-08 15:31:02
【问题描述】:
我的 Tomcat 8 服务器经常出现内存不足。 我的猜测是Tomcat不限制内存中http会话的数量,所以如果你得到足够多的用户,那么服务器最终会耗尽内存。
我知道您可以像这样在 web.xml 中设置会话超时,
<session-config>
<session-timeout>30</session-timeout>
</session-config>
但是,如果您在 30 分钟内获得大量用户,这将无济于事。 我搜索了很多方法来限制会话数量,但令人惊讶的是没有找到太多信息。似乎这将是一个常见问题,因为默认情况下 Tomcat 保证在高负载时会耗尽内存。
那么,如何设置 http 会话数的限制,以使 Tomcat 在达到该限制时最老的过期?这似乎是不耗尽内存的唯一合乎逻辑的方法。
【问题讨论】:
-
tomcat.apache.org/tomcat-8.0-doc/config/manager.html 引用了一个 maxActiveSessions 参数...
-
您有多少活动会话?
-
提示:而不是猜测:创建一个堆转储(java_home/bin/jmap)并使用eclipse MAT之类的工具来分析堆......因为......我不认为它是会话,只要没有数千个会话和/或会话存储大量信息...
-
有数千个会话,只有在高负载时才会耗尽内存
-
问题更多的是“没有http会话限制的tomcat怎么不会内存不足”,如果没有限制,如果你有足够的用户它将耗尽内存
标签: java tomcat out-of-memory httpsession