Shi*_*esh 4 java spring tomcat processor core
我有一个 Spring 应用程序,它在 Apache Tomcat 7 上运行并且完全提供基于 REST 的服务。我有大约 100 万人将在全球范围内使用它。我的问题是,是否有任何标准方法可以计算此类站点所需的处理器数量和 RAM。因为我拥有最多的东西,但我想明智地订购产品。我正在认真地寻找可以让我做出这样估计的公式或其他东西。请向我指出这一点。
或者请指出为了启动和运行这样的基础架构应该考虑的各种限制。我想请您指出以下要求
万分感谢。
我会尝试列出一些我能想到的约束,但可能还有更多:
运行 apache 的网络服务器
查看使用的文件句柄数量(以防 apache 提供静态内容,如 css、javascript 或图像)。
此外,http 连接的数量可能是一个约束(通常每个并发用户一个)。
另一个约束可能是将请求传递给 tomcat 的 ajp 工作线程数。
内存限制要求可能不是那么大,但这取决于您的 apache 做什么。
运行Tomcat的应用服务器
在这里,会话的大小将是一个限制。请注意,根据会话超时,并发会话的数量可能远高于并发用户的数量(并非所有人都需要进行并发请求,但会话仍然需要内存)。
此外,可用于服务执行的线程数将是一个约束。您的服务响应速度越快,被阻塞的线程就越少,因此需要的线程也就越少。
运行 Redis、postgres 和 mongodb 的数据库服务器。
对于数据库来说,至少有两个约束:连接数(每个请求至少需要一个数据库访问)和查询缓存的内存(内存越多,可以缓存的查询结果越多,响应速度越快)。
总体
对于需要 5000 - 10000 个并发用户的系统,您可能需要研究集群和负载平衡。这将允许您根据需要进行调整(如果您的资源被用完,您可以添加另一个节点,如果从不需要大多数资源,您可以删除节点)并且具有更高可靠性的额外好处(如果一个节点关闭)系统可能会变慢,但它仍会运行)。
为了分析您的系统,您可能需要并模拟许多并发访问并监视关键参数(文件句柄、内存使用情况、使用的线程、数据库连接、http 连接等)。从少量用户开始(例如 10 个),然后稳步增加(例如到 100,然后是 1000 等)。当访问时间低于某个(自定义)限制时,找到瓶颈,提供更多资源并重试。最终,您会发现一些趋势(例如,每 500 个用户的累积会话大小为 1GB),这将允许您对更多并发用户数进行粗略估计。
对于模拟并发用户,请查看Apache JMeter
| 归档时间: |
|
| 查看次数: |
4388 次 |
| 最近记录: |