【问题标题】:Threads in application server and connections in HttpServer应用程序服务器中的线程和 HttpServer 中的连接
【发布时间】:2014-03-15 11:17:55
【问题描述】:
我正在构建一个系统,我将使用两台服务器和一个负载均衡器,
这家公司有 60,000 多个用户,他们预计 10,000 个并发用户,所有交易将在 5 秒内发生
我不确定每个服务器的情况如何:
HttpServer 中的连接数
应用服务器的线程数
我知道当系统投入生产时我会找到这个数字,但我需要从一些东西开始
有什么建议或意见吗?
【问题讨论】:
标签:
multithreading
application-server
httpserver
【解决方案1】:
这是关于容量规划的,我可以给出一些建议如下,但都取决于您系统的技术可行性和业务需求。
- 尝试找出您需要支持的最大容量。因此,您可以进行必要的压力测试来解决这个问题。
- 确保系统能够通过横向集群等方式提高性能。
- 确定预测容量需求 (CR),CR 可能是硬件、带宽等
预测 CR = 当前 CR + 30%*当前 CR
希望这能给你带来一些价值。
【解决方案2】:
设置一个测试服务器并从那里推断数字(花一些时间进行研究以得出有根据的猜测)。
例如,“应用程序服务器中的线程数量”取决于您使用的 HTTP 服务器类型。一些服务器可以使用单个线程处理数百个连接,但编程/配置不当的服务器可能最终每个连接使用 1 个线程。
“所有事务将在 5 秒内发生”的性能要求需要进一步详细说明。向用户显示带有数据(来自数据库)的网页可能不会超过 3 秒(如果需要更长的时间,用户会感到烦躁),但理想情况下应该少于 1 秒(普通用户会期望)。另一方面,可能需要 10 秒来存储来自复杂表单的数据(只要表单不经常使用)。
我会怀疑负载要求“他们期望 10,000 个并发用户”。这意味着六分之一的公司员工正在积极使用网络应用程序。我认为这将是“峰值使用量”而不是“平均使用量”。关于性能要求和成本,了解这一点很重要:如果系统必须在高峰使用期间遵守性能要求,您需要更多的钱来购买更好和/或更多的硬件。