openshift上的NodeJS应用程序充斥着空的请求

时间:2014-03-07 10:05:20

标签: node.js openshift

我不完全确定这是不是坏事,但我正在监视(记录)我用这段代码得到的传入http请求(注意在可扩展的OpenShift平台上运行NodeJS应用程序):< / p>

function onRequest(request, response)
{
    var date = new Date();
    console.log(date.toUTCString() + " A request was made with url: " + request.url + " and header: " + JSON.stringify(request.headers));
    // continue handling the request
}

我得到的结果如下(每2秒钟):

 Fri, 07 Mar 2014 09:43:59 GMT A request was made with url: / and header: {}
 Fri, 07 Mar 2014 09:44:01 GMT A request was made with url: / and header: {}
 Fri, 07 Mar 2014 09:44:03 GMT A request was made with url: / and header: {}

所以我想知道这是否是openhift中可扩展的NodeJS应用程序(附带MongoDB数据库设备)的正常行为,或者这是否会导致问题?

此致

Hylke Bron

3 个答案:

答案 0 :(得分:3)

如果您正在运行缩放的应用程序,那么就是haproxy,确保您的应用程序已启动,以便它可以将请求转发给它。您可以在主设备上的haproxy / haproxy.cfg文件中更改haproxy设置。

答案 1 :(得分:1)

我正在使用此方法通知OPENSHIFT应用程序处于活动状态

app.head("/", function(req, res, next){
    res.status(200).end();
});

答案 2 :(得分:0)

由于我不想弄乱haproxy.cfg,我这样做了,它似乎有效。在您的主应用程序中,添加中间件功能以在ping上中止

function ignoreHeartbeat(except) {
   except = except || 0;
   var count = except;
   return function(req, res, next) {
      if (req.headers["x-forwarded-for"])
         return next();

      if (except > 0) {
          if (--count <= 0) {
             count = except;
             return next();
          }
       }

       res.end();
   }

}

app.use(ignoreHeartbeat(1000));

将代码放在之前设置记录器(Express 3示例如下所示)

app.use(express.logger(...))

每1000次ping一次。将0除外设置为忽略所有ping。