小编ire*_*nal的帖子

Node.js Express 应用程序在负载测试下花费太多时间来处理出站 HTTP 请求

我在 Linux 机器(Ubuntu 12.04 64 位,3.75GB 内存,1 核)上有一个 Express (node.js v0.10.29) 代理,它为每个传入请求发出一些出站 HTTP 请求。在进行负载测试时,我发现响应时间变得非常慢(在触发 1000 次时发出 4 个出站请求的请求大约需要 30 秒)。经过一番调查后,我确定出站请求是瓶颈,并消除了机器限制(CPU 和内存没有超过 20%,并且我将打开文件的数量增加到 10000)。首先,我使用 request 模块进行出站请求,尝试将其更改为 http 模块,并且对于这两个模块都尝试增加globalAgent.maxSockets、 using agent = false、使用我自己的代理以及任意数量的maxSockets、 设置request.setNoDelay(true)、 using cluster,但没有对结果做出任何改变我的负载测试。

可能是什么问题?

这是我的 HTTP 请求的最新代码:

var http = require('http');
var agent = new http.Agent();
agent.maxSockets = 100;

var doPost = function(reqUrl, body, next, onError) {
    var stringBody = JSON.stringify(body);
    var headers = {
        'Content-Type': 'application/json',
        'Accept-Encoding': 'gzip',
        'Content-Length': stringBody.length …
Run Code Online (Sandbox Code Playgroud)

node.js express node-modules node-request

5
推荐指数
1
解决办法
3077
查看次数

标签 统计

express ×1

node-modules ×1

node-request ×1

node.js ×1