我正在对我们正在制作的网站进行压力测试,结果与我的预期相比非常令人吃惊:
当有几百人同时访问时,我们的网站加载速度开始变得非常慢,尽管 CPU 和内存都很好。查看任务管理器的“网络”选项卡,我发现我的 100 Mbps 网卡已达到 98% 的最高速度。
出于某种原因,这对我来说听起来非常荒谬......
每次我读到有关可扩展性的内容时,它都是 CPU、内存、缓存等等,而在这里我遇到的瓶颈是网卡本身。
我们提供的内容都是经过 gzip 压缩的,我们的主页有点重,但也没有那么重。我从来没想到网卡会成为瓶颈。
这是正常的吗?
每个人都使用 1Gbps 网卡来建立面向公众的网站吗?
我以为 100 Mbps 才是标准。
我是不是看错了?我是不是错误地理解了“网络”选项卡中的图表?
注意:我能想到很多方法来解决此问题,首先是购买 1 Gbps 卡,然后将静态文件移动到自己的服务器。我的问题主要是是否每个人都在使用 1 Gbps 连接,这会让我大吃一惊。
答案1
听起来你正在耗尽可用带宽。你要么减少带宽,要么换成 1Gbps 卡,这通常是我期望在面向公众的 Web 服务器中找到的(过去 10 年里,我接触过的每一台服务器级机器都是如此 - 你在哪里找到带有廉价 100mbps 卡的服务器?它真的是重新设计的桌面吗?)。
需要检查或考虑的一些事项:
- 您没有提到缓存。如果您的网站设置不当,无法为静态文件(如图像)返回良好的缓存标头,那么您将遭受巨大损失。使用 FireFox 和 YSlow 插件(来自 Yahoo)向您显示比较缓存和非缓存页面大小的饼图。
- 您的测试方法是什么?您的 100 个“用户”是否以最快的速度访问网站?缓存怎么样 - 如果您的用户只是不断抓取某些页面的机器人,他们可能会忽略您的缓存提示(参见最后一点)。
- 您正在使用 gzip 压缩,但是您的内容中有多少是文本(gzip 有帮助)以及有多少是图像和其他二进制文件(gzip 通常不执行任何操作)?
- 您是否将网络带宽用于其他功能 - 例如单独的数据库服务器?
- 您并没有真正明确说明您的页面有多大(使用 YSlow 来查看)。您是否可能使用大图像代替缩略图(我见过很多网站,一个页面上有几兆字节的图像,因为设计师/设计师的工具只是使用 width 和 height html 属性将图像文件缩小为缩略图)。
答案2
带宽成为第一个瓶颈并不令我感到意外。多年来,CPU、RAM、HD 和所有其他组件都突飞猛进,而 100 Mbps 已经存在十多年了。因此,您面临的情况是,您有一个能够处理典型负载的优质设备,但它使用十多年的旧技术进行连接。
即便如此,您是否确信 100 个同时用户模拟准确反映了现实世界的流量情况?在 100 个完全同时点击的情况下,只需为每人提供 1 兆比特或 128K 的流量,即可达到峰值流量。这是一个非常低的上限,我的感觉是 - 除非您确定您将获得这种使用量 - 否则您可能需要修改负载测试。
答案3
多年来,功能较弱、较简单的 Web 服务器一直在吹嘘自己的速度,而 Apache 爱好者多年来一直指出,Apache 的速度足以让网络接口饱和。听起来您的网站效率很高。您真的在传输 100 兆比特的数据,还是网络堆栈占用了大量 CPU?
答案4
我建议检查您的环境的网络方面:
- 有没有广播风暴或者愚蠢的聊天协议消耗你的带宽?
- 检查交换机端口是否以 100/full 运行(不知道是否可以在 Windows 上检查)。半双工确实很糟糕。
- 查看交换机端口上的错误计数器是否 >0。如果是,请更换电缆和/或 NIC,然后尝试另一个端口。
如果没有问题,就升级到千兆(无论如何这应该是服务器的标准)。