运行具有巨大networkingstream量的应用程序的服务器要求

我所问的是一个非常普遍的问题,当开发人员想要托pipe一台服务器时,任何开发人员都会想到一个确切的答案。 我需要托pipe一个返回20KB HTTP响应的服务器。 该服务器预计每天将获得一千万个请求,每分钟最多请求一万个请求。 什么服务器容量(RAM,带宽等)我应该有? 让我们安全地忽略其他因素,如存储,像SQL等数据库容量。这个问题的主要目的是判断硬件估计的带宽和RAM(或其他硬件),可以处理这么多的同时连接。

如果回答这个问题的人提供关于被认为能够得出答案的因素的解释,那么不仅对我而言,对任何有兴趣的人都是非常有帮助的。 pipe理这些因素的公式将帮助任何人改变我原来的问题的要求,并得出所需的答案。

没有公式。 最好的办法是试着拿到一些testing设备,并build立一个类似于生产环境和testing的环境。

好吧,没有确切的公式,但根据你提供的数字,可以估计一些需要的规格。

每秒10.000个请求
每个请求20KB
等于每秒200,000KB

所以,忽略存储和IO带宽,至less会使两个1GE链路饱和。

不知道响应的性质,我不能提供有关存储需求或RAM的任何估计

所以你需要提供更多的信息
你能够caching内容?
你使用PHP,ASP或类似的?

如果您正在提供静态内容,则可以使用两台内存大且每个1GE的服务器,将2台负载均衡器放在前面。
这应该够了。

如果您正在提供dynamic内容,则此任务将成为完全不同的球赛。

Zoredache是​​正确的:您需要使用您的应用程序进行真实世界testing,以便进行准确的容量规划。 但是,说…


如果您希望每天获得一千万个请求,并且每个请求都是20 KB,那么每天要处理大约190 GB或每月5912 GB。 为了大致了解带宽成本,亚马逊的S3服务收费为0.12美元/ GB,因此您只需要花费709.44美元/月的带宽。

您估计的峰值负载是每分钟10,000个请求,或每秒167个请求。 在每个20 KB,即3.26 MB /秒的数据,或约26 Mbps这是如何正常测量带宽。

如果你正在提供小的静态文件,任何现代的服务器应该能够处理这个负载。 如果你做了大量的计算来产生20KB的输出,那么即使是function最强大的服务器也可能会很容易被压制。 在不了解应用程序的情况下,无法确定带宽是否是限制因素。

祝你好运!