node.js-到端点的post请求在一段时间后开始停滞

node.js-到端点的post请求在一段时间后开始停滞,node.js,amazon-ec2,mongoose,amazon-sns,node-request,Node.js,Amazon Ec2,Mongoose,Amazon Sns,Node Request,我已经开发了一个node.js webapp,并将express+mongoose部署到Amazon EC2实例中 当一个文件被上传到特定的s3存储桶时,应用程序会收到SNS通知,在mongodb中存储一些东西,然后向amazon之外的某个端点发送https帖子。https post使用请求库以这种方式完成: var options = { url:"https://"+config.get('some.endpoint')+"/somepath", metho

我已经开发了一个node.js webapp,并将express+mongoose部署到Amazon EC2实例中

当一个文件被上传到特定的s3存储桶时,应用程序会收到SNS通知,在mongodb中存储一些东西,然后向amazon之外的某个端点发送https帖子。https post使用请求库以这种方式完成:

 var options = {
        url:"https://"+config.get('some.endpoint')+"/somepath",
        method:'POST',
        body:postdata,
        json:true
    };


    requests.post(options,function(err,response,body){
        if (!err && response.statusCode === 200) {
          logger.info("notified ok ");
        }else{
            logger.error("1 " + err);
            logger.error("2 " + response);
            logger.error("3 " + body);
        }
    });
这是使用一个简单的回调模型完成的,即我没有使用异步库

文件不断上传,因此SNS以每秒约5/10个请求的速度点击我的应用程序。在应用程序启动的前十分钟,我可以通过检查日志看到,随着传入请求的到来,http post正在以接近速度交付

但是在某个时刻,requests.post回调开始落后,直到它停止出现在日志文件中,尽管请求不断出现。通过检查config.get'some.endpoint'中指定的另一个端点,我可以有效地判断出没有传递帖子。在不同的突发事件中,随着5分钟或更长时间的延迟,一些新消息会出现在日志中,就像它试图赶上,但从长远来看,它们根本不会出现

我已经意识到,如果我通过停止/重新启动传入请求来进行一些手动流控制,我可以使它正常工作

我做错什么了吗?请求是否因为某种原因堆积在某个地方?我怎么检查这个?我应该使用一些库来确保执行吗

node.js是否更喜欢处理新的传入请求而不是处理旧的回调请求,而且这些回调永远不会执行

欢迎就如何调试此问题提供任何帮助或建议


提前谢谢

尝试将pool:false添加到选项中,看看这是否有帮助。我以前在使用http代理时遇到过这个问题。实际上没有帮助,状态相同。有人告诉我,应该使用承诺或类似async的框架来正确处理回调。我做了一些测试,似乎效果更好。