我正在使用Scala开发Web应用程序。它是一个简单的应用程序,它将从客户端(JSON或ProtoBufs)获取端口上的数据,并使用数据库服务器进行一些计算,然后使用JSON / Protobuf对象回复客户端。
它不是一个非常繁重的应用程序。最多1000行代码它将在每个客户端请求上创建一个线程。现在获取请求和回复之间的时间在20到40毫秒之间。
我需要建议我应该使用什么样的硬件/设置来每秒处理3000多个此类请求。我需要购买硬件放在我的数据中心。
任何有大规模部署Java应用程序经验的人,请指教。我应该使用一个带有2 - 4 Xeon 5500s,32 GB RAM或多台小型机器的大盒子。
更新 - 我们没有很多客户。其中3 - 4。请求将来自这3个。
答案 0 :(得分:2)
如果每个请求平均花费30毫秒,则单个核心每秒只能处理30个请求。假设您的应用程序线性扩展(您可以预期的最佳方案),那么您将需要至少100个核心才能达到3000 req / s。这超过2-4 Xeon。
最糟糕的是,如果你的应用程序依赖于IO或DB(就像大多数有用的应用程序一样),你将得到一个次线性缩放,你可能需要更多...
因此,首先要做的是分析和优化应用程序。以下是一些提示:
ExecutorService
)。