tomcat 什么是Java Web应用程序中的活动会话?

tcbh2hod  于 2022-11-13  发布在  Java
关注(0)|答案(1)|浏览(170)

什么是tomcat中的“活动会话”?我正在尝试监控一个Java Web应用程序的活动会话。但是我得到的值与使用Web应用程序的人数不匹配。你能解释一下吗?

x8diyxa7

x8diyxa71#

活动会话的数量基本上是现有的或以前的浏览器或其他具有唯一jSESSIONID cookie值的连接的数量。一旦有人用浏览器点击您的网页,就会启动一个新的会话,并为该会话分配一个唯一的JSESSIONID。如果下次点击使用相同的JSESSIONID(作为cookie或url参数传输)会话计数保持不变。如果未传输参数,则创建新会话。
通常所有的浏览器都会在多个请求甚至多个标签页或窗口中保存会话id cookie(当然除了匿名标签页/窗口)。
会话数大于用户数有多种原因。

  • 会话会在tomcat中保留一段时间,默认为2小时。您可以在tomcat设置中更改这个时间。因此,如果第一个小时有100个用户登录到您的应用程序,第二个小时也有100个用户登录,那么即使前100个用户处于空闲状态,您的会话总数也将是200。
  • 像谷歌机器人这样的机器人往往会创建大量的会话。如果你的页面是公开的,请检查访问日志,看是否有机器人访问你的页面。
  • 如果您的应用程序位于负载平衡器或代理服务器之后,而负载平衡器或代理服务器会不断地“ping”您的应用程序以获取其可用性,则此ping操作也会创建会话。
  • 最后,有很多“有趣”的方法可以让你的应用程序从浏览器获得请求,例如搜索结果预取和类似的。
  • 同时请记住,会话与网站的域名绑定,因此,如果用户通过多个域(例如www.domain.com用于内容,www.example.com用于图像)连接到您的网站static.domain.com,每个连接都将有自己的会话。

现在,有不同的方法来防止不必要的会话创建,这取决于您的确切问题是什么(以及它是否是一个问题)。

  • 如果你的应用程序中有不需要会话的部分,确保你不在代码中调用request.getSession()
  • 在tomcat/conf/web.xml中,会话超时越短,过期越快<session-config><session-timeout>30</session-timeout></session-config>会话超时的值以分钟为单位。

最后,如果您对应用程序中实际发生的情况感兴趣,那么可以使用MoSKito之类的APM(应用程序性能管理)工具

相关问题