绘制ab节点,聚类和nginx结果,奇数结果?

我用ab -n 10000 -c 1000对不同configuration的node.js进行了testing,每个都返回stringHello World! 。 结果对我来说似乎很奇怪。

X轴是请求的数量,y是以毫秒为单位的响应时间。

  • 节点是单独的服务器
  • 节点(集群)是使用cluster模块的服务器(双核)
  • Nginx(平衡器)作为运行相同代码的(两个)节点实例前面的平衡器

第一件事是nginx太慢了,平衡器也是这三者中最差的。 直到1000个请求(比群集慢),它比单独的节点要好。 另一个奇怪的是节点单独有一个恒定的响应时间,直到〜7000(?)。 从约7000个请求开始,群集的响应时间大于节点,这似乎太奇怪了。

你会如何解释这些结果? 我做错了吗(长凳或绘图错误)?

绘制ab结果

ApacheBench 2.3(1430300),Node.js 0.10.5,nginx 1.4.1。 在Xubuntu上运行13.04 x64。

这是一个解释的问题。 你没有做错什么。 这是我如何解释图。 这是x vs y的分布图,其中:

  • y是以毫秒为单位的响应时间,
  • x是累计在yms内返回的请求数。

基于节点请求分配的语句(单独)将是:

  • 10,000个请求中的7000个在〜14ms内被返回
  • 在剩余的3000个请求中有2000个在14-18毫秒内被返回
  • 剩余的1000个请求中有800个在18-22毫秒内被返回
  • 其余200人在35毫秒内返回

但是,当累积分析时,会是:

  • 10,000个请求中有7000个在14 ms内返回
  • 10000个请求中有9000个在18 ms内返回
  • 10000个请求中的9800个在22毫秒内被返回
  • 所有都在35毫秒内返回

按照预期,群集configuration将显示比单个节点更快的结果。

对于nginx的结果,处理/负载平衡将会有一个固定的延迟。 看着这个数字,大约是9-10毫秒的延迟,这是预期的。 这并不意味着nginxconfiguration是一个糟糕的执行者。 它确实在30毫秒内返回大多数请求(与其他configuration的差别很小)。

您在Apache Bench中将并发请求数设置为1000,即使单个节点也轻松处理这么多的负载,并不需要太多的负载平衡。 为每个请求提供更多的并发连接/更重的处理将炸毁单个节点的graphics(它会提早提出请求数量较less)。 Nginx牺牲了很less的处理时间,以允许更多的并发请求被处理,同时仍然保持合理的响应时间。