Java / Scala资源消耗和负载

我正在
Scala中开发一个Web应用程序.它是一个简单的应用程序,它将从客户端(
JSON或ProtoBufs)获取端口上的数据,并使用数据库服务器进行一些计算,然后使用JSON / Protobuf对象回复客户端.

它不是一个非常重的应用程序.最多1000行代码它将在每个客户端请求上创建一个线程.获取请求和回复之间的时间是20到40毫秒.

我需要建议我应该使用什么样的硬件/设置来每秒处理3000个这样的请求.我需要购买硬件放在我的数据中心.

任何有大规模部署Java应用程序经验的人,请指教.我应该使用一个大盒子,2 – 4 Xeon 5500s,32 GB RAM或多个小型机器.

更新 – 我们没有很多客户.其中3 – 4.请求将来自这3个.

最佳答案 如果每个请求平均花费30毫秒,则单个核心每秒只能处理30个请求.假设您的应用程序线性扩展(您可以预期的最佳方案),那么您将需要至少100个核心才能达到3000 req / s.这超过2-4 Xeon.

最糟糕的是,如果你的应用程序依赖于IO或DB(就像大多数有用的应用程序一样),你将得到一个次线性缩放,你可能还需要更多…

因此,首先要做的是分析和优化应用程序.以下是一些提示:

>创建一个线程很昂贵,尝试创建有限数量的线程并在请求中重用它们(例如,在java中查看ExecutorService).
>如果您的应用程序是IO密集型的:尝试尽可能减少IO调用,使用内存中的缓存并尝试非阻塞IO.
>如果您的应用程序依赖于数据库,请考虑缓存并尝试使用分布式解决方案.

点赞