我有一个node.js应用程序,我正在使用“监控和分析”服务进行监控。
我正在使用jMeter(或SOAP UI)对我的node.js应用程序进行负载测试。我使用负载测试工具获得的平均响应时间是900毫秒,但在监控和分析图表中显示的是111毫秒。
另一方面,吞吐量是正确的。(jMeter为110tx / sec,蓝色混合为6600tx / min)
我是否误解了bluemix图中的某些内容?为什么这800ms差异?
编辑:800ms的开销可能是由于我的计算机/工具/网络引起的,但是当我在我的本地环境中运行100个并发线程的测试时,在其他位置(网络/地方)一次调用服务需要900毫秒,如果我的环境是其他位置的原因,响应时间应该是111毫秒而不是900毫秒,所以我认为它与我的基础设施无关。谢谢。
答案 0 :(得分:2)
Monitoring and Analytics服务测量Node.js应用程序从处理请求的点开始构建HTTP响应所需的时间。
这是一个用测量点注释的简单HelloWorld示例:
var http = require('http');
var port = (process.env.VCAP_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
http.createServer(function handler(req, res) {
// TIMER STARTS
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World');
// TIMER ENDS
}).listen(port, host);
这意味着未测量两个(可能是主要的)延迟:
网络延迟
即。网络从浏览器向Node.js服务器发送请求所需的时间,以及要传回的响应。
HTTP请求队列延迟/深度
即。从接收HTTP请求的Node.js到可以处理它的时间。由于Node.js具有在单个线程上运行的事件循环,因此一次只能处理一个“阻塞”操作。如果HTTP请求的应用程序处理纯粹是阻塞的,就像在HelloWorld示例中那样(没有发生异步调用),那么每个HTTP请求都是串行处理的。
其中第二个可能导致延迟 - HTTP请求是串行运行的,因此监控和分析服务告诉您构建响应请求需要111毫秒,但还有800毫秒请求排队等待运行的位置。
答案 1 :(得分:0)
不同之处在于,您没有从客户端到服务器以及服务器到客户端的网络延迟。 Bluemix将记录接收呼叫时的延迟以及响应何时消失。使用jMeter时,您将在响应将离开计算机时进行录制,然后在响应将返回时进行录制(同时下载数据)。
900毫秒很多,我猜你每次通话都会收到多少数据。