【问题标题】:Tomcat Manager Application - Too many sessionsTomcat 管理器应用程序 - 会话过多
【发布时间】:2012-11-12 00:21:36
【问题描述】:

当我检查我的Tomcat 应用程序管理器时,我发现我有太多会话(超过 4600 个):

为什么会这样?这可以链接到已部署的应用程序还是它已经运行了很长时间?

【问题讨论】:

    标签: session tomcat tomcat6


    【解决方案1】:

    这可能有多种原因,其中一些比其他的更奇特。其中一些:

    • 确实有很多用户访问您的网站
    • 您的应用内存不足,导致会话无效的线程已终止
    • 您已被搜索引擎爬虫或 DDOS 攻击(不太可能)
    • 您启用了某种通过 HTTP 完成的监控,并且会话不会被丢弃

    您查看过这些会话的列表吗?他们有相似的空闲时间吗?哪些页面被点击? HTTP 日志说明了什么? (谷歌)分析?

    应用已长时间在线这一事实与会话数无关。 Tomcat 会定期使这些会话失效。

    为了获得最精确的答案,请进行内存转储并使用分析器对其进行分析。

    【讨论】:

    • you have some sort of monitoring enabled which is done via HTTP and the sessions are not discarded 这是最可能的原因,因为我使用comet 服务进行推送通知.. 我是否需要以编程方式删除会话,或者正如你所建议的那样,Tomcat 用完了内存和会话无效?
    • 如果您的 comet 请求不需要会话,只需在您的 servlet 调用末尾添加 session.invalidate(),或者如果您因任何原因无法执行此操作,请添加一个过滤器来执行此操作。跨度>
    • 我停止了所有正在运行的应用程序(我只留下了 //host-manager/manager 上下文路径),但我仍然有 6000 多个会话(并且还在增加)。所以这不是应用问题。会话没有属性,每个会话有 30 分钟超时。
    • tomcat 使用 21% 的内存,几乎没有 cpu .. (我刚刚重新启动它).. 可能是什么问题?谢谢
    • 你做内存转储了吗?这是唯一能够给出肯定答案的东西。