javascript - 具有多个用户的 NodeJS/ExpressJS 服务器中的可变存储限制?
问题描述
我想在节点服务器代码内的变量中存储一些临时数据(对象和数组)。这些变量存储在套接字的客户端变量中,并在与客户端的连接丢失时清除。我的问题是,当有成百上千的用户连接到服务器时,这种方法的内存使用限制是多少?有什么好担心的吗?这种方法是否比每分钟从 Mongo 数据库中为每个用户多次获取数据更好?关于系统性能,我真的很好奇
解决方案
这实际上取决于数据的大小。只需将估计的数据大小乘以同时连接的用户数,然后将其翻倍(对于 JS 存储开销),看看它有多大。这并不意味着是一个精确的计算,而是给你一个大概的数字来检查。
例如,如果您有 5k 的数据乘以 10,000 个用户,则上述等式将是:
5120 x 10,000 x 2 = 102,400,000 bytes or 98MB
在正常情况下,您将拥有一台具有千兆字节可用内存的服务器。
有什么好担心的吗?
因此,插入您自己的数据大小并与服务器中的典型可用内存进行比较。在大多数情况下,这个例子会很好,因为 100MB 没什么大不了的,除非你在一些低内存配置中运行。
这种方法是否比每分钟从 Mongo 数据库中为每个用户多次获取数据更好?
如果你有合适的内存并且你没有像这样缓存数据的更新问题,那么像这样在内存中缓存数据会比不断地查询 Mongo 更快。
推荐阅读
- java - 我是否在 Java 中正确关闭了我的输入流?
- python - numpy.linalg.LinAlgError:数组的最后 2 个维度必须是正方形
- javascript - 为什么 if 函数不会再次运行带有数字的提示?
- python - Django 3无法在“WITH ORDINALITY”处或附近迁移数据库语法错误
- python - Python字符串搜索多个选项卡
- python - 如何使用 python 比较 excel 和 csv 列
- python - 在 Python 中计算二项式系数的所有可能组合?
- java - Spring Data JPA:保存嵌套的 OneToMany 子级(具有级联)返回 NULL 父级外部对象
- moq - '((System.Linq.IQueryable)((Moq.Mock)(mockDbSet)).Object).Provider' 引发了“System.NotImplementedException”类型的异常
- javascript - 如何使用 jquery 保持两个过滤器处于活动状态?