刚刚开始测试 nodejs,并希望在理解以下行为方面获得一些帮助:
示例 #1:
var http = require('http');
http.createServer(function(req, res){
res.writeHeader(200, {'Content-Type': 'text/plain'});
res.end('foo');
}).listen(1001, '0.0.0.0');
示例 #2:
var http = require('http');
http.createServer(function(req, res){
res.writeHeader(200, {'Content-Type': 'text/plain'});
res.write('foo');
res.end('bar');
}).listen(1001, '0.0.0.0');
在 Chrome 中测试响应时间时:
示例 #1 - 6-10 毫秒
示例 #2 - 200-220 毫秒
但是,如果通过 nginx proxy_pass 测试这两个示例
server{
listen 1011;
location / {
proxy_pass http://127.0.0.1:1001;
}
}
我明白了:
示例 #1 - 4-8 毫秒
示例 #2 - 4-8 毫秒
我不是 nodejs 或 nginx 的专家,请问是否有人可以解释这一点?
nodejs - v.0.8.1
nginx - v.1.2.2
更新:
感谢 Hippo,我在有和没有 nginx 的服务器上使用 ab 进行了测试,得到了相反的结果。
还添加到 nginx 配置 proxy_cache off
server{
listen 1011;
location / {
proxy_pass http://127.0.0.1:1001;
proxy_cache off;
}
}
示例#1直接:
ab -n 1000 -c 50 http://127.0.0.1:1001/
服务器软件: 服务器主机名:127.0.0.1 服务器端口:1001 文件路径:/ 文档长度:65 字节 并发级别:50 测试时间:1.018 秒 完成请求:1000 失败的请求:0 写入错误:0 总传输量:166000 字节 传输的 HTML:65000 字节 每秒请求数:981.96 [#/sec](平均值) 每个请求的时间:50.919 [ms](平均值) 每个请求的时间:1.018 [ms](平均值,所有并发请求) 传输速率:收到 159.18 [Kbytes/sec] 连接时间(毫秒) 最小值平均值[+/-sd] 中值最大值 连接:0 0 0.6 0 3 处理:0 50 44.9 19 183 等待:0 49 44.8 17 183 总计:1 50 44.7 19 183
示例 #1 nginx:
ab -n 1000 -c 50 http://127.0.0.1:1011/
服务器软件:nginx/1.2.2 服务器主机名:127.0.0.1 服务器端口:1011 文件路径:/ 文档长度:65 字节 并发级别:50 测试时间:1.609 秒 完成请求:1000 失败的请求:0 写入错误:0 总传输量:187000 字节 传输的 HTML:65000 字节 每秒请求数:621.40 [#/sec](平均) 每个请求的时间:80.463 [ms](平均) 每个请求的时间:1.609 [ms](平均值,所有并发请求) 传输速率:收到 113.48 [Kbytes/sec] 连接时间(毫秒) 最小值平均值[+/-sd] 中值最大值 连接:0 0 0.6 0 3 处理:2 77 44.9 96 288 等待:2 77 44.8 96 288 总计:3 78 44.7 96 288
示例#2直接:
ab -n 1000 -c 50 http://127.0.0.1:1001/
服务器软件: 服务器主机名:127.0.0.1 服务器端口:1001 文件路径:/ 文档长度:76 字节 并发级别:50 测试时间:1.257 秒 完成请求:1000 失败的请求:0 写入错误:0 总传输量:177000 字节 传输的 HTML:76000 字节 每秒请求数:795.47 [#/sec](平均值) 每个请求的时间:62.856 [ms](平均) 每个请求的时间:1.257 [ms](平均值,所有并发请求) 传输速率:收到 137.50 [Kbytes/sec] 连接时间(毫秒) 最小值平均值[+/-sd] 中值最大值 连接:0 0 0.3 0 2 处理:0 60 47.8 88 193 等待:0 60 47.8 87 193 总计:0 61 47.7 88 193
示例#2 nginx:
ab -n 1000 -c 50 http://127.0.0.1:1011/
服务器软件:nginx/1.2.2 服务器主机名:127.0.0.1 服务器端口:1011 文件路径:/ 文档长度:76 字节 并发级别:50 测试时间:1.754 秒 完成请求:1000 失败的请求:0 写入错误:0 总传输量:198000 字节 传输的 HTML:76000 字节 每秒请求数:570.03 [#/sec](平均) 每个请求的时间:87.715 [ms](平均) 每个请求的时间:1.754 [ms](平均值,所有并发请求) 传输速率:收到 110.22 [Kbytes/sec] 连接时间(毫秒) 最小值平均值[+/-sd] 中值最大值 连接:0 0 0.4 0 2 处理:1 87 42.1 98 222 等待:1 86 42.3 98 222 总计:1 87 42.0 98 222
现在结果看起来更有逻辑了,但是调用时仍然有一个奇怪的延迟res.write()
我想这是(当然看起来)一个愚蠢的问题,但我仍然在浏览器的响应时间与这个服务器配置(Centos 6)和这个具体的服务器(vps)有很大的不同。
在我的家用计算机(Ubuntu 12)上,但从 localhost 测试旧版本一切正常。