假设我有一台服务器连接到公共 100mbps 网络交换机。例如,该服务器以 1mbps 的速度提供网页服务。那么,我如何估计连接的饱和点?
这是正确的吗:100mbps/1mb(页面大小)= 每秒 100 个。这意味着,饱和点是同一时刻有 100 个同时连接到服务器(每个连接需要 1mb)??
这是问题的一部分。现在让我们考虑一个现实生活中的例子。一个博客,例如thenextweb.com,通过CDN提供其静态内容(1520KB)。因此,剩下的是动态生成的HTML(960KB),应该由服务器本身提供。
考虑到该博客每月的页面浏览量为 5000 万次(相当于每秒 20 次页面浏览量),并且在高峰流量期间每秒的页面浏览量为 70 次,您认为该网站会因 100mbps 的连接而变慢吗?
编辑说明:让我们假设它们位于单个 Web 服务器上,并且不使用浏览器缓存。来吧,thenextweb 只是一个例子。只是,请只考虑我列出的内容。我想知道我的理论/计算/估计是否正确。
答案1
为了便于计算,我们假设每秒的页面浏览量为 50 次,并且每页加载的流量为 1MB,且没有任何缓存
记住 1MB 是 8Mb(端口速度以兆比特而不是兆字节为单位进行宣传和评级)50*8 等于 400mbps,如果这是一个 10/100 端口,它将在每秒页面浏览量略高于 13 次时停止工作。这种计算非常有缺陷,因为它没有考虑到人们拥有更快或更慢的互联网连接,也没有考虑到缓存等
实际上,除非网络接近极限,否则网站不会因为网络而变慢。根据您提到的统计数据,该网站很可能不是由一台服务器提供服务,并且/或者不是在 10/100 端口上,而是在千兆端口上,您更有可能在此之前遇到其他瓶颈,如 CPU 或 RAM(特别是如果您在每次加载页面时提供一兆字节的动态内容)
答案2
别忘了阅读http://blog.serverfault.com/post/per-second-measurements-dont-cut-it/- ServerFault 遇到了问题,因为突发流量超过了网卡接口速度,尽管平均速度远低于网卡接口速度,直到他们将硬件升级到可以对网络流量说“稍等片刻”的硬件。
如果您希望您的模型更加真实,请记住考虑 TCP 开销和 HTTP 标头开销,以及 TCP 连接开销 - 1 个连接传输 960Kb 与 3 个连接加起来 960Kb 不同。
并且Apache经常设置为向客户端发送压缩数据。
尽管如此,即使在一个“瞬间”有 100 个连接,回复也不必是即时的,并且如果数据包丢失,TCP 可以重试,所以只要不是每瞬间 100 个连接每一刻那么可能发生的情况是,服务器对其中一些数据包的响应会有几十或几百毫秒的延迟,或者一些数据包被丢弃,源会重新发送它们,然后一切都会继续正常进行。
答案3
我想我知道你的意思。如果你说的是简单的饱和,没有任何形式的缓存,如果你的页面大小为 1 兆字节,并且你的连接速度为 100mbps,那么从该连接每秒可以获得 12-13 兆字节的范围。
但是……您不能简单地将 12 兆字节除以每页 1 兆字节,然后说您每秒只能处理 12 页。还有许多其他因素(如缓存、压缩和管道饱和)可以改变这些数字。