【发布时间】:2011-12-04 11:18:21
【问题描述】:
我正在用 Scala 开发一个 Web 应用程序。它是一个简单的应用程序,它将从客户端(JSON 或 ProtoBufs)获取端口上的数据,并使用数据库服务器进行一些计算,然后使用 JSON / Protobuf 对象回复客户端。
它不是一个非常繁重的应用程序。最多 1000 行代码。它将在每个客户端请求上创建一个线程。现在从收到请求到回复所需的时间在 20 到 40 毫秒之间。
我需要关于我应该使用哪种硬件/设置来处理每秒 3000 多个此类请求的建议。我需要采购硬件放在我的数据中心。
请任何有大规模部署 Java 应用程序经验的人提出建议。我应该使用一个带有 2 - 4 个 Xeon 5500 和 32 GB RAM 的大盒子还是多台较小的机器。
更新 - 我们没有很多客户。其中 3 - 4 个。请求将来自这 3 个。
【问题讨论】:
-
首先通过不在每个客户端请求上创建线程来优化您的应用程序。使用线程池。然后进行测量和实验。
-
您可以尝试使用 SoapUI 或类似工具来测量负载。通过这种方式,您可以测试某种类型的机器如何处理您的应用程序所需的负载。
-
忘了提及更新。现在我正在尝试在线程中使用 HTTP 管道从单个套接字获取多个请求。所以线程数应该减少。
-
3000 req/sec 是稳定状态吗?另外,您需要提供多少延迟?你还提到你有一个 Redis 服务器 - 它目前可以处理 3000+ req/sec 吗?
-
是的,如果您将整个数据库都放在内存中,redis 会很舒服。每秒 3000 是高峰时间。晚上会下来。
标签: java scala load scalability protocol-buffers