【发布时间】:2014-08-13 16:33:14
【问题描述】:
我正在使用 NGinx + Node.js + Express + Firebase 开发一个应用程序,它只需从移动应用程序获取输入并将其存储到 Firebase,可选择将文件上传到 S3。
简单来说,“create”函数就是这样做的
- 验证输入
- 格式化输入 检查是否有文件上传
(通过
multer插件)并存储它 - 如果有文件,上传 到 Amazon S3 并删除源文件(重要的是要注意我是 在包含 S3 之前遇到此问题)。
- 创建项目 通过推入 Firebase 上的项目参考
- 为 通过推送到 Firebase 上的 user_items 引用来访问用户。
我已经实现了一些其他功能作为 API。
我的问题来自 CPU 使用率的间歇性峰值,这导致 nginx 服务器从 Node.js 应用程序报告网关超时。
有时服务器会在对 MongoDB 实例执行身份验证时发生故障,有时在我从移动应用程序接收输入时服务器会发生故障。它跌倒时似乎没有任何一致性。有时它适用于 15 多个不同的请求(上传/登录/列表等),但有时它会在一个请求后崩溃。
我添加了以下形式的错误检查:
process.on('uncaughtException', function(err) {
console.error(err.stack);
});
例如,如果我输入错误的变量会引发错误,但是当服务器崩溃时不会引发异常。同样,检查我的日志什么也没显示。我已经尝试分析应用程序,但输出对我来说根本没有任何意义。它并不特别指向函数或插件。
我很欣赏这是一个冗长的问题,但如果你能给我指出调试这个问题的方向,我真的很感激,这让我很头疼!
【问题讨论】:
-
Bugger 可能会有所帮助。您使用 Chrome 开发工具来访问它。
-
感谢您的回复,但
bugger不会在我的服务器上启动,即使我是 root,也会抛出 ECONNREFUSED。已经查看了节点检查器,但它没有让我对网络选项卡有任何可见性,我认为这对于了解是否是导致它的任何外部调用至关重要。 -
您是否尝试过使用 New Relic 之类的工具来帮助检查您的应用?
-
感谢您的想法。我已经安装了它,但 New Relic 似乎没有返回太多的使用数据。我会一直安装它以防万一。
标签: node.js express nginx firebase