node.js - Azure VM 上的 Mean.io 的奇怪行为

标签 node.js azure mean.io

我使用 Ubuntu 14.04 LTS 操作系统创建了 Azure 虚拟机。 我在此虚拟机上安装了 Mean.io 应用程序版本 0.3.3,其中 nginx 通过端口 80 代理 http 端口 3000 中的请求。 我在 azure 门户中为专用端口 3000 和公共(public)端口 80 上的 TCP 协议(protocol)打开了一个端点。 我在 Azure VM 上安装了最新版本的 Node 。 数据库 (mongoDB) 托管在 compose.io 上。

使用 pm2 ( https://www.npmjs.org/package/pm2 ),我创建了一个运行该应用程序的守护进程。

一切显然都工作正常:CPU 没有负载,内存为空(只有 100MB)。

但是一段时间后,node.js 无法处理该请求。 我尝试在 localhost 3000 中执行“curl”,但没有任何响应。

问题仅在 Azure VM 中持续存在:我在我的开发计算机(ubuntu 14.04 桌面)和 Digital Ocean(ubuntu 14.04 服务器的另一个发行版)上尝试了具有相同配置的相同应用程序,并且一切正常,没有问题.

你能帮我找出问题所在吗?

最佳答案

我尝试在同一台机器(azure 上的 CoreOS 虚拟机)中对所有基础设施进行 dockerize:

1 个带有平均应用程序的容器, 1 个带有 MongoDB 的容器, 问题仍然存在!!!

最后,我找到了解决方案:保持与 MongoDB 的连接。 我已经在此模式下从平均应用程序修改了 server.js 文件:

var options = {
server: {
        socketOptions: { keepAlive: 1 }
        }
};
var db = mongoose.connect(config.db, options);

在此模式下,连接仍然有效,问题已解决。

关于node.js - Azure VM 上的 Mean.io 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27090003/

相关文章:

javascript - 在服务器关闭连接之前,浏览器不会响应服务器发送的事件

azure - 将多个 Azure WebJobs 部署到 YAML 管道中的单个 Azure AppService

当App为 "closed"时Android未收到PushNotification

javascript - 如何在本地主机或开发系统 Ubuntu 中运行 openshift MEAN 项目?

javascript - 尝试调用工厂方法

html - MEAN JS - 主要 html 文件 (index.html) 位于何处

javascript - 允许远程服务器访问本地主机上的 API 服务器

javascript - chrome 在 WebSocket 握手期间出现新错误

node.js - 无法让nodeJS Express post显示正文数据

azure - 使用 Azure Runbook 拉取并运行 Docker 容器