这是否证明了网络带宽瓶颈?

Modified on: Tue, 05 Nov 2019 22:40:03 +0800

我错误地认为我的内部AB测试意味着我的服务器可以处理1k并发速度@ 3k每秒点击次数。

目前我的理论是网络是瓶颈。服务器无法足够快地发送足够的数据。

blitz.io以1k并发方式进行的外部测试表明我的hits / s封顶为180,页面需要更长时间才能响应,因为服务器每秒只能返回180.

我已经从nginx提供了一个空白文件并对其进行了修改:它以并发比例缩放1:1。

现在要排除IO / memcached瓶颈(nginx通常从memcached中提取),我从文件系统中提供了一个静态版本的缓存页面。

结果与我原来的测试非常相似;我的上限是大约180 RPS。

将HTML页面拆分为两半会使我的RPS增加一倍,所以它肯定受到页面大小的限制。

如果我在本地服务器内部使用ApacheBench,那么在高传输速率下,我会在整页和半页上获得大约4k RPS的一致结果。
传输速率:62586.14 [Kbytes / sec]收到

如果我是来自外部服务器的AB,我可以获得180RPS - 与blitz.io结果相同。

我怎么知道这不是故意限制?

如果我从多个外部服务器进行基准测试,所有结果都会变得很差,这让我相信问题出在我的服务器出站流量中,而不是我的基准测试服务器/ blitz.io的下载速度问题。

所以我回到我的结论是我的服务器无法足够快地发送数据。

我是对的吗?还有其他方法来解释这些数据吗?解决方案/优化是设置多个服务器+负载平衡,每个服务器每秒可以提供180次点击吗?

我对服务器优化很陌生,所以我很感激任何解释这些数据的确认。


出站流量

以下是有关出站带宽的更多信息:网络图显示最大输出为16 Mb / s:每秒16兆位。听起来不是很多。

由于有关限制的建议,我调查了这一点,发现linode有一个50mbps的上限(显然我甚至没有接近击中)。我把它提高到了100mbps。

由于linode限制了我的流量,而我甚至没有点击它,这是否意味着我的服务器确实能够输出高达100mbps但是受到其他一些内部瓶颈的限制?我只是不明白这个大规模的网络是如何工作的;他们能否以最快的速度从硬盘中读取数据?网络管道 大吗?


总结

1:基于以上所述,我认为我绝对可以通过在多个nginx服务器设置之上添加一个nginx负载均衡器来提高我的180RPS,其中每个服务器正好在180RPS之后。

2:如果linode有50 / 100mbit的限制,我根本没有打,那么我必须做一些事情来达到我的单一服务器设置的限制。如果我可以在本地快速读取/传输数据,并且linode甚至不愿意拥有50mbit / 100mbit上限,那么必然存在一个内部瓶颈,不允许我触及那些我不确定如何检测的上限。正确的吗?

我意识到现在问题是巨大而模糊的,但我不确定如何压缩它。如果我做出任何结论,任何意见都会受到赞赏。

作者:,Yuji Tomita

最佳答案

问题在于我假设linode.com图表峰值是真正的峰值。事实证明该图表使用了5分钟的平均数据点,因此我的峰值似乎是24mbits,而事实上我正在达到50mbit上限。

现在他们已将它提升到100个,我的基准测试立即达到了新的出站流量限制。

如果我之前只注意到了这一点!我的很多理由都取决于我是不是因为该图而没有达到出站流量限制。

现在,我达到每秒370个请求的峰值,这正好低于100mbps,此时我开始收到请求的“积压”,响应时间开始上升。

我现在可以通过缩小页面来增加最大并发度;启用gzip我得到600RPS。

当我突然达到峰值并且待处理请求的积压(受带宽限制)开始累积时,我仍然遇到问题,但这听起来像是一个不同的问题。

在优化/阅读这些数据/缩小可能存在的问题方面,这是一个很好的教训。非常感谢您的投入!


相关问答

添加新评论