我目前正在服务器上测试 node.js,并且正在使用 Apache 的“ab”实用程序执行一些非常基本的基准测试,它给我的结果让我摸不着头脑。
因此,只是设置和“控制”的真正快速背景。
-我在服务器上设置了 node.js,当您点击地址时,它会以单行响应
"<html><body>hello</body></html>"
-resopnse 的标头设置正确,以便浏览器知道返回的数据类型
"Content-Type": "text/html"
当我从网络浏览器请求这个时,一切都很好。我使用 Wireshark 查看浏览器和服务器之间的来回显示,看起来很正常:
Source Destination Protocol Info
10.1.10.51 | xxx.xx.xxx.xx | TCP | 50281 > http [SYN]
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.1
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50281 [SYN ACK]
10.1.10.51 | xxx.xx.xxx.xx | TCP | 50281 > http [ACK]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | [TCP segment of a reassembled PDU]
10.1.10.51 | xxx.xx.xxx.xx | TCP | 50278 > http [ACK]
xxx.xx.xxx.xx | 10.1.10.51 | HTTP | HTTP/1.1 200 OK (text/html)
当我使用 Apache 的“ab”来测试完全相同的东西时,问题就出现了,这是我运行的命令:
sudo ab -n 1 http://xxx.xx.xxx.xx/
现在,“ab”退出正常,并给出了我期望的报告,但是当我实际查看 node.js 服务器上的流量并通过 Wireshark 时,我看到一些流量我不能完全平方
如你所见,我指定只有1 个请求。然而,当我在 Wireshark 查看数据包时,我看到的不仅仅是一个请求。
Source Destination Protocol Info
10.1.10.51 | xxx.xx.xxx.xx | TCP | 50314 > http [SYN]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [SYN ACK]
10.1.10.51 | xxx.xx.xxx.xx | TCP | 50314 > http [ACK]
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP...
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP...
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [ACK]
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP...
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [ACK]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [ACK]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [ACK]
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP...
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP...
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [ACK]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | [TCP segment of a reassembled PDU]
10.1.10.51 | xxx.xx.xxx.xx | HTTP | GET / HTTP/1.0
xxx.xx.xxx.xx | 10.1.10.51 | HTTP | HTTP/1.1 200 OK (text/html)
10.1.10.51 | xxx.xx.xxx.xx | TCP | 50314 > http [ACK]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [RST]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [RST]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [RST]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [RST]
xxx.xx.xxx.xx | 10.1.10.51 | TCP | http > 50314 [RST]
我假设“ab”作为其分析过程的一部分发出额外的请求,但它也导致 node.js 响应每个“GET”。
如果这是“ab”的“预期”行为,我觉得这不是什么大问题,但我想确定,而不是假设。
当我向“ab”指定1 个请求时,我希望有1 个请求,但我可能会遗漏有关此实用程序如何工作的一些信息。
任何想法或链接到手册的适当部分将不胜感激
谢谢。