2

我目前正在服务器上测试 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 个请求,但我可能会遗漏有关此实用程序如何工作的一些信息。

任何想法或链接到手册的适当部分将不胜感激

谢谢。

4

0 回答 0