我很想知道我可以依靠Siege和AB的负载测试结果。我意识到他们不考虑静态资产(图像,JS,CSS),但假设所有这些东西都是从CDN提供的,如果Siege / AB告诉我我可以满足200个并发用户,那么我有什么理由不应该这样做不相信吗?我没有考虑任何其他因素,例如运行测试的机器可能有任何限制吗?
答案 0 :(得分:34)
这是一篇非常好的文章,讨论了尝试进行Siege
或ab
类型测试的缺陷,然后抽象出你的webapp或网站在负载下的表现。
Siege不代表真实用户(或多个用户)在您的网站上实际做的事情。它只能加载原始响应代码和HTML,而不是页面中的所有其他元素(图像,CSS,JS或其他静态内容) - 如此有效,它只测试PHP性能。
它还支持非常有限的会话/ cookie,不支持流水线操作和对HTTP / 1.1的基本支持。它产生的负载与真实用户的负载完全不同,因此它有助于在更改后快速参考;它并没有真正表明在现实生活中用户会有任何改变。
Siege很容易被愚弄,它无法区分正在提供的静态文件(即纯HTML文件)或动态文件(即动态Magento PHP页面)。因此,如果您运行任何类型的静态文件代理,结果会立即出现偏差。此时 - 您将只测试缓存代理,而不是测试后面的交付速度。
所以那些使用Varnish,Nginx缓存,mod_pagecache的人可以轻松地将页面缓冲到缓存中,你会看到20ms以下的渲染时间。如果您使用Varnish,然后使用Siege来测试性能 - 您可能也会加载图像而不是类别URL,因为它会给出完全相同的结果。
测试远程服务器几乎没有意义,因为它是并发测试(即可以重复满足多少请求),直接瓶颈是两台机器之间的网络连接。延迟和TCP / IP开销使得测试远程站点完全没有意义,两台服务器之间的对等端之间最轻微的网络拥塞将立即显示性能降低。因此,真正开始发挥作用的是TCP 3次握手的完成速度 - 被测试的服务器可以提供动态页面或静态0字节文件 - 您可以看到完全相同的性能比率,如连通性是瓶颈。
他们在文章中讨论的另一个问题是,您的网站与访问它的客户之间的延迟会对您网站的整体效果产生最大的影响。他们很好地解释了延迟如何以最终用户会感受到的方式影响您的网站效果,但Siege
和ab
类型的测试工具永远不会暴露。
再次摘录文章:
[~]$ 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 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连接,耗时156ms,多62次 而不是英国的服务器。这意味着在你尝试之前 什么,你可以在一秒钟内在Siege上实现的最大吞吐量 由于仅有延迟,每秒约有6笔交易。
我强烈建议阅读整篇文章。它非常好地解释了使用Siege
和ab
等工具进行性能测试的缺陷!