我有一个Node.js
服务器,它可能接受数以万计的socket.io
连接。
对于每个套接字,我需要有某种间隔(使用setInterval()
)来通知内存数据库该套接字仍然处于活动状态。这纯粹是为了垃圾收集的目的——当一个套接字被认为是非活动的时,它的会话数据将被 gc'd。
有两种幼稚的方法:
- 为所有套接字设置一个超时,当触发时,将运行所有套接字并通知数据库它们是活动的
- 为每个套接字设置超时
第一种方法对我的应用程序层更有效,但对数据库更苛刻,因为所有请求都会同时出现(尽管不经常出现)。
第二种方法很好,因为数据库命中会更均匀地分布,但我不确定这对应用程序本身的性能有多苛刻。
因此,考虑到这一点,如果它们非常长(每个大约每 10 分钟一次),同时拥有数万个间隔是否有效?