我错误地认为我的内部AB测试意味着我的服务器每秒可以处理1k并发@ 3k点击。
目前,我的理论是网络是瓶颈。服务器无法足够快地发送足够的数据。
来自blitz.io的并发率为1k的外部测试显示,我的命中率上限为180,由于服务器每秒只能返回180,因此页面的响应时间越来越长。
我已经从nginx提供了一个空白文件,并进行了替换:它并发地按1:1比例缩放。
现在要排除IO / memcached瓶颈(nginx通常从memcached中提取),我提供了文件系统中缓存页面的静态版本。
结果与我的原始测试非常相似;我的上限是180 RPS。
将HTML页面分成两半,可使我的RPS翻倍,因此,它肯定受页面大小的限制。
如果从本地服务器内部内部使用ApacheBench,则在高传输速率下,整页和半页上都可以获得大约4k RPS的一致结果。传输速率:接收到62586.14 [Kbytes / sec]
如果我从外部服务器进行注册,我将获得180RPS的收益-与blitz.io结果相同。
我怎么知道这不是故意的节流?
如果我从多个外部服务器进行基准测试,那么所有结果都会变差,这使我相信问题出在我的服务器出站流量,而不是基准服务器/ blitz.io的下载速度问题。
所以我回到我的结论:我的服务器不能足够快地发送数据。
我对吗?还有其他方法可以解释这些数据吗?解决方案/优化是否设置了多个服务器+负载平衡,每个服务器每秒可以处理180次匹配?
我对服务器优化还很陌生,因此感谢您对这些数据进行解释的确认。
出站流量
以下是有关出站带宽的更多信息:网络图显示最大输出为16 Mb / s:每秒16兆位。听起来一点也不。
由于有节流的建议,我对此进行了调查,发现linode的上限为50mbps(显然,我甚至还没有达到这个上限)。我把它提高到了100mbps。
由于linode限制了我的访问量,而我什至没有实现,这是否意味着我的服务器确实应该能够输出高达100mbps的数据,但受到其他内部瓶颈的限制?我只是不了解如此大规模的网络是如何工作的。它们可以像从HDD读取数据一样快速地发送数据吗?网络管道有那么大吗?
结论
1:基于以上所述,我认为我可以通过在多nginx服务器设置之上添加nginx负载平衡器来提高我的180RPS,使LB后的每台服务器恰好为180RPS。
2:如果linode的限制是50 / 100mbit,而我完全没有达到,则必须做一些事情才能通过单服务器设置达到该限制。如果我可以在本地足够快地读取/传输数据,并且linode甚至不愿意设置50mbit / 100mbit的上限,则必须存在一个内部瓶颈,该瓶颈使我无法确定那些不知道如何检测的上限。正确?
我知道这个问题现在很大而且很模糊,但是我不确定如何浓缩。我做出的任何结论都值得您的任何投入。