nodejs 504高流量的GATEWAY_TIMEOUT错误

时间:2015-04-06 17:09:24

标签: node.js amazon-web-services express amazon-ec2 load-balancing

我正在使用nodejs 0.12.2express.js 4以及async waterfall流来处理同步功能。 在redisElasticache上使用Dynamodb的数据库网站上。 我正在使用pm2模块进行线程化和部署。 代码在Centos6上的AWS ec2 ELB上运行,同时也使用ELB的自动缩放功能。 我的代码完全适用于200请求/分钟的低流量,但当我将服务器上的流量增加到10000请求/分钟时,我收到504 GATEWAY_TIMEOUT错误。

我的示例代码如下。

routes/idex.js

var express = require('express');
var async = require('async');
var router = express.Router();
var url = require('url');
// other require variables 

router.get('/', function (req, res, next) {

    try {
        var rd = JSON.parse(query.hit);
        if (rd === false && typeof rd !== "object" && rd === null) {
            next();
        }
    } catch (e) {

    }

    async.waterfall([
        function (next) {
            next(null, rd);
        },
        func1,
        func2
    ], function (err, result) {

    });

    response["d"] = "d";
    res.json(response);
}); // eof route
module.exports = router;

function func1(rd, next) {
    var gd = {
        var1: rd.var1
    };



    gd.var2 = false;
    common.callback1(gd.var2, function (x) {
        gd.var2 = session_id || false;
        if (gd.var2 === false || !gd.var2) {
            common.setVar(varData);
        }
        next(null, gd);
    });

} // EOF func1


function func2(gd, next) {

    // looping synchronously
    async.eachLimit(gd.vars4, 1, function (var4, callback) {

        async.waterfall([
            function (inner_callback) {
                common.cb1(domain, function (si) {
                    inner_callback(null, si);
                });

            },
            function (si, inner_callback) {
                common.cb2(si, sub_domain, function (si) {
                    inner_callback(null, si);
                });

            },
        ],
                function (err, si) {
                    callback();
                });

    }); // eof for loop
    next(null, "true");
}

0 个答案:

没有答案