问题描述
我想在节点服务器代码内部的变量中存储一些临时数据(对象和数组)。 这些变量存储在套接字的客户端变量中,并在与客户端的连接断开时清除。 我的问题是,当有成百上千的用户连接到服务器时,此方法对内存使用的限制是多少?有什么需要担心的吗?这种方法是否比每分钟从Mongo数据库中多次为每个用户提取数据更好? 对于系统性能,我真的很好奇
解决方法
这实际上取决于数据量。只需将数据的估计大小乘以同时连接的用户数即可,然后将其增加一倍(以节省JS存储开销),然后查看它的大小。这并不是一个精确的计算,而是要给您一个大概的数字。
例如,如果您有5k的数据乘以10,000个用户,则上式是:
5120 x 10,000 x 2 = 102,400,000 bytes or 98MB
在正常情况下,您有一台具有千兆字节内存的服务器。
有什么需要担心的吗?
因此,插入您自己的数据大小,然后将其与服务器中的典型可用内存进行比较。在大多数情况下,此示例就可以了,因为除非您在某些低内存配置下运行,否则100MB没什么大不了的。
此方法比每分钟从Mongo数据库中为每个用户多次提取数据更好吗?
如果您有合适的内存,并且在缓存数据方面没有更新问题,那么像这样在内存中缓存数据要比不断查询Mongo更快。