HapiJS + hapi-mongo-models服务器卡在504(http错误)

时间:2016-05-22 06:52:29

标签: node.js mongodb nginx hapijs

我的NodeJS服务器处于一种奇怪的模式,每次调用API都会返回504。 这是我的卡住了:

  1. 使用HapiJS节点JS(hapi@11.1.4,hapi-mongo-models @ 3.0.0)。
  2. 节点由PM2提供(单实例无群集)。
  3. 通过NGINX代理提供对节点服务器的请求。
  4. 在过去6个月(过去几天)内使用此服务器后,服务器在一段时间后(可能是5分钟或24小时)进入此模式,其中每个API调用使用 hapi-mongo-models 连接到MongoDB返回504(等待一分钟后)。

    这是我尝试过的:

    1. 我检查了NGINX状态 - 其他请求(例如静态页面)工作正常。我还测试了根本不需要使用MongoDB的资源,它们也可以正常工作。所以没有NGINX问题。
    2. 我尝试使用(https://github.com/felixge/node-stack-trace)查看V8堆栈大小,但也没有运气,它经常站在大约50个项目上,其中请求正常刷新。
    3. 我创建了一个能够在运行时评估内容的资源,因此我可以在内部调试我的服务器。这让我觉得MongoDB本身运行得很好。因为如果我直接使用mongodb模块:

    4. var mongodb = require('mongodb'); 
      var MongoClient = mongodb.MongoClient; 
      var url = 'mongodb://localhost:27017/xxxxxxxxxxx'; 
      MongoClient.connect(url, function (err, db) { 
          if (err) { 
              reply(err) 
          } else { 
              var Users = db.collection('users'); 
              Users.find({userId: '119507586'}).toArray().then(function (err, users) {
                  reply(err);
                  db.close()
              });
          } 
      }); 
      

      它完全正常(如果请求此方法,则返回有效值,而其他API调用返回504 - 使用hapi-mongo模型的那些)。

      1. 我查看了NGINX请求和错误日志以及应用程序日志,查找可能导致内部循环或崩溃的可疑请求,但找不到任何内容(我已经尝试重现错误调用在服务器进入504模式之前,这组请求是相同的。)
      2. 此时我想我已将其缩小为以下选项:

        1. 根据某些请求,某些内容会导致BaseModel(其中一个访问者,例如user) - > require('hapi-mongo-models').BaseModel出现了一些内部错误,因此扩展BaseModel的每个模型都存在问题。
        2. 错误?
        3. 所以我需要帮助:) 任何想法,想法和帮助都非常受欢迎!
          谢谢!

0 个答案:

没有答案