23

我很想知道我可以在多大程度上依赖 Siege 和 AB 的负载测试结果。我意识到他们没有考虑静态资产(图像、JS、CSS),但假设所有这些东西都是从 CDN 提供的,如果 Siege/AB 告诉我可以同时满足 200 个用户,我有什么理由应该不相信吗?我是否没有考虑任何其他因素,例如运行测试的机器可能存在的任何限制?

4

1 回答 1

37

这是一篇非常好的文章,讨论了尝试进行Siegeab类型测试的陷阱,然后抽象出您的 web 应用程序或网站在负载下的性能。

http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento-performance/

以下是该页面中的一些项目符号,它们提出了进行此类测试的问题:

  • Siege 并不代表真实用户(或多个用户)在您的网站上实际执行的操作。它只能加载原始响应代码和 HTML,而不是页面中的所有其他元素(图像、CSS、JS 或其他静态内容)——如此有效,它只测试 PHP 性能。

  • 它还具有非常有限的会话/cookie 支持,不支持流水线和对 HTTP/1.1 的基本支持。它产生的负载与真实用户的负载完全不同,因此虽然它有利于更改后的快速参考;它并不真正表明现实生活中的用户会发生任何变化。

  • Siege 很容易上当,它无法区分提供的静态文件(即纯 HTML 文件)或动态文件(即动态 Magento PHP 页面)。因此,如果您正在运行任何类型的静态文件代理,结果会立即出现偏差。此时——您将只测试缓存代理,而不是它背后的交付速度。

  • 因此,那些使用 Varnish、Nginx 缓存、mod_pagecache 的人可以轻松地将页面缓冲到缓存中,您将看到低于 20 毫秒的渲染时间。如果您使用 Varnish,然后使用 Siege 来测试性能 - 您可能会加载图像而不是类别 URL,因为它会给出完全相同的结果。

  • 测试远程服务器几乎没有意义,因为它是一个并发测试(即可以重复满足多少请求),直接的瓶颈是两台机器之间的网络连接。延迟和 TCP/IP 开销使测试远程站点完全没有意义,两台服务器之间的对等点之间最轻微的网络拥塞将立即显示性能下降。因此,真正开始发挥作用的是 TCP 3 次握手可以多快完成——被测试的服务器可以提供动态页面或静态 0 字节文件——你可以看到完全相同的性能速率,如连通性是瓶颈。

他们在文章中讨论的另一个对您网站的整体性能影响最大的问题是您的网站与访问它的客户之间的延迟。他们很好地解释了延迟如何以最终用户会感觉到的方式影响您的网站性能,但测试工具Siegeab类型永远不会暴露。

再次摘录文章:

从英国ping到英国

[~]$ ping www.bytemark.co.uk -c4
PING www.bytemark.co.uk (212.110.161.177) 56(84) bytes of data.
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=1 ttl=57 time=2.86 ms
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=2 ttl=57 time=2.51 ms
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=3 ttl=57 time=2.54 ms
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=4 ttl=57 time=2.63 ms
--- www.bytemark.co.uk ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.515/2.641/2.869/0.142 ms

从英国ping到美国

[~]$ ping www.mediatemple.net -c 4
PING www.mediatemple.net (64.207.129.182) 56(84) bytes of data.
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=1 ttl=49 time=158 ms
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=2 ttl=49 time=154 ms
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=3 ttl=49 time=154 ms
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=4 ttl=49 time=154 ms

--- www.mediatemple.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 154.155/155.282/158.321/1.802 ms

您可以立即看到性能上的差异。对于从英国到美国的单个 TCP/IP 连接,它需要 156 毫秒,是英国服务器的 62 倍。这意味着,在您尝试任何事情之前,您在 Siege 上在一秒钟内可以实现的最大吞吐量将是每秒大约 6 个事务,仅由于延迟。

我强烈建议阅读整篇文章。它很好地解释了使用Siegeab

于 2013-01-12T03:36:10.523 回答