请教tomcat集群下采用memcached共享session时在线人数统计的问题

求教问题如下:

5台tomcat集群,tomcat的session采用memcached管理,需要统计在线人数,通过登录加1、退出减1的形式计算,结果放在memcached中。存在的问题是采用HttpSessionListener监听不到超时退出用户(未加memcached时是可以的),导致在线人数计算不准。

请教各位高手,如何解决这个问题?还有没有更好的统计方式?

先行谢过!

2个回答

:D 另外,开台服务器,用js自动发送心跳。

shzke
shzke 我已经这样实现了,居然刚好和你的方法一样,不过总感觉有些不完美。 分还是给你吧,谢谢。
大约 6 年之前 回复
iteye_15760
iteye_15760 想要实时统计在线用户,就一定要自己管理session会话,你让tomcat自己管理肯定不行。用js间隔几秒向服务器发送个心跳数据(sessionID)。服务器则以map方式存储心跳数据,当前心跳时间为key,sessionID为value.当查询在线用户,用当前时间减去间隔秒数时间作为map的Key,查询所有时间范围内的sessionID值的一个数组,更加sessionID你就可以弄到这些在线用户信息了。
大约 6 年之前 回复
shzke
shzke 确实在线的用户统计倒没什么问题,关键是用户关闭浏览器离开后的超时无法监听到。
大约 6 年之前 回复

HttpSessionListener,HttpSessionAttributeListener

liu9403
liu9403 在集群下,session过期侦听不到的
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问