使用Siege和AB测试的准确度如何?

Mat*_*ham 21 apache performance performance-testing

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

slm*_*slm 35

这是一篇非常好的文章,讨论了尝试做Siegeab进行测试的陷阱,然后抽象了你的webapp或网站在负载下的表现.

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的人可以轻松地将页面缓冲到缓存中,你会看到20ms以下的渲染时间.如果您使用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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

我强烈建议阅读整篇文章.它非常好地解释了使用Siege和等工具进行性能测试的缺陷ab.