java web统计在线人数怎么搞?

时间:2022-04-02 22:03:26
想实时计算在线人数,多台服务器,用HttpSessionListener貌似不行。
想用redis,但是redis里不能针对set数据的每个member设置过期时间。求各路大神指导!

12 个解决方案

#1


Listener监听session

#2


不会不行啊。多台服务器实质上统计的是每一台服务器的在线人数。你需要一个把多台服务器的在线人数整合在一起的策略。
你可以存放在数据库,不断update和select。也可以对服务器之间做通讯,例如某一台的服务器为主服务器(是否放单独的服务器取决决策者本人)分别统计自己和其它子服务器的总数量。然后子服务器与父服务器之间做长连接。这样每台子服务器的在线人数就是实际上真正的在线人数

#3


小白前来学习!

#4


用session监听器HttpSessionListener或者HttpSessionBindingListener,session创建时把session传入一个session集合,session销毁时把集合中的这个session去除,集合的session个数就是在线人数了

#5


楼上正解 监听session就可以

#6


引用 4 楼 u011086231 的回复:
用session监听器HttpSessionListener或者HttpSessionBindingListener,session创建时把session传入一个session集合,session销毁时把集合中的这个session去除,集合的session个数就是在线人数了
我也有这个疑问,请问如果我关掉页面后,这个可以监听得到session已经结束了吗?

#7


分布式环境下session是共享的,所以没问题,也可以把session交由redis管理

#8


还不如弄ehcache,只要在配置文件里面配置一下就可以了

#9


http 是没有状态的,统计 session 也只能是一个模糊的估值而已

#10


页面段可以每个几秒给服务器发请求,服务器在调用 特定统计在线人数服务,可以理解为‘心跳’ , 统计心跳的次数,即为当前在线实时人数

#11


不要仅仅局限于sesssion,会把自己困死在里面的

#12


引用 10 楼 zhouren1314 的回复:
页面段可以每个几秒给服务器发请求,服务器在调用 特定统计在线人数服务,可以理解为‘心跳’ , 统计心跳的次数,即为当前在线实时人数


页面段可以每个几秒给服务器发请求,服务器在调用 特定统计在线人数服务,可以理解为‘心跳’ , 由特定服务统计心跳的次数,即为当前在线实时人数,然后在分发给广播给各个服务器。 和二楼理解相符合

#1


Listener监听session

#2


不会不行啊。多台服务器实质上统计的是每一台服务器的在线人数。你需要一个把多台服务器的在线人数整合在一起的策略。
你可以存放在数据库,不断update和select。也可以对服务器之间做通讯,例如某一台的服务器为主服务器(是否放单独的服务器取决决策者本人)分别统计自己和其它子服务器的总数量。然后子服务器与父服务器之间做长连接。这样每台子服务器的在线人数就是实际上真正的在线人数

#3


小白前来学习!

#4


用session监听器HttpSessionListener或者HttpSessionBindingListener,session创建时把session传入一个session集合,session销毁时把集合中的这个session去除,集合的session个数就是在线人数了

#5


楼上正解 监听session就可以

#6


引用 4 楼 u011086231 的回复:
用session监听器HttpSessionListener或者HttpSessionBindingListener,session创建时把session传入一个session集合,session销毁时把集合中的这个session去除,集合的session个数就是在线人数了
我也有这个疑问,请问如果我关掉页面后,这个可以监听得到session已经结束了吗?

#7


分布式环境下session是共享的,所以没问题,也可以把session交由redis管理

#8


还不如弄ehcache,只要在配置文件里面配置一下就可以了

#9


http 是没有状态的,统计 session 也只能是一个模糊的估值而已

#10


页面段可以每个几秒给服务器发请求,服务器在调用 特定统计在线人数服务,可以理解为‘心跳’ , 统计心跳的次数,即为当前在线实时人数

#11


不要仅仅局限于sesssion,会把自己困死在里面的

#12


引用 10 楼 zhouren1314 的回复:
页面段可以每个几秒给服务器发请求,服务器在调用 特定统计在线人数服务,可以理解为‘心跳’ , 统计心跳的次数,即为当前在线实时人数


页面段可以每个几秒给服务器发请求,服务器在调用 特定统计在线人数服务,可以理解为‘心跳’ , 由特定服务统计心跳的次数,即为当前在线实时人数,然后在分发给广播给各个服务器。 和二楼理解相符合