【发布时间】:2014-08-10 00:17:27
【问题描述】:
我有一个 NodeJS/Express/Jade 应用程序,可以在我的本地 Linux 环境中正常运行(Ubuntu 12.04 Desktop 运行 NodeJS,与运行 Couchbase 的 Ubuntu 12.04 Server 通信)。我试图手动将 NodeJS 应用程序部署到 EC2 上的全新 Ubuntu 12.04 Server AMI。我的安全组已设置。设置 VM 防火墙并测试端口。 NodeJS VM 可以与 Couchbase VM 通信(在启动期间由控制台日志证明)。两个虚拟机都可以通过它们的弹性 IP 访问。对于端口 8000 上的简单 NodeJS“Hello World”服务器,它可以正常工作。端口 3000 上的主应用程序有问题。
1) 当我从 EC2 外部调用应用程序时,layout.jade、样式表和图像的链接记录 500 错误,但从另一个 EC2 实例(Couchbase VM)我可以 curl 获取图像并接收文件,似乎表示站点路径设置正常。此外,在这种情况下,NodeJS 会记录预期的 200 结果代码。
2) NodeJS 记录错误:建立 TCP 连接时出错。即使我只是从其他 EC2 虚拟机请求单个图像文件,也会发生这种情况。
Amazon 支持人员还表示,该实例的 CPU 使用率偶尔会达到 100%,超过 96% 会导致实例失去网络连接。但是,我无法通过调用我的应用程序或从服务器请求图像文件来导致 CPU 峰值,但仍会记录 TCP 错误。
任何尝试的建议将不胜感激。
更新:我仍然有同样的问题,但我通过将相同的应用程序部署到 Bitnami 64 位 Ubuntu 节点 AMI(包括安装Couchbase SDK + 依赖项)。同样的问题出现在基于 Bitnami 的实例上。因此,问题显然与应用程序识别其自身资源的能力有关......这仍然很奇怪,因为我可以请求相同的资源(图像、css 文件)并很好地接收它们,所以 Express 可以看到它们。我仍然收到无法在日志中解释的 TCP 连接错误。
这是在 AWS 中获得所有 500 的 layout.jade,但在本地 Linux 上运行良好:
doctype html
html
head
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1.0')
title= title
link(rel="stylesheet", href="/stylesheets/pure-min.css")
link(rel="stylesheet", href="/stylesheets/grids-responsive-min.css")
link(rel='stylesheet', href='/stylesheets/layouts/marketing.css')
link(rel='stylesheet', href='/stylesheets/layouts/pure-skin-mmc.css')
link(rel='stylesheet', href='/stylesheets/style.css')
link(rel='stylesheet', href='/stylesheets/jquery.datepick.css')
link(href='http://fonts.googleapis.com/css?family=Nunito:400,700,300', rel='stylesheet', type='text/css')
link(rel="icon", href="/images/m.png", type="favicon")
script(type='text/javascript', src='/javascripts/jquery-1.10.2.min.js')
script(type='text/javascript', src='/javascripts/jquery.validate.js')
script(type='text/javascript', src='/javascripts/jquery.plugin.js')
script(type='text/javascript', src='/javascripts/jquery.datepick.js')
script(type='text/javascript', src='/javascripts/d3.min.js')
script(type='text/javascript', src='/javascripts/mmc.js')
body(class="yui3-skin-mmc pure-skin-mmc")
block content
更新 2:我已经能够通过指向 EC2 Couchbase 服务器实例在本地复制此行为。显然,虽然连接到 Couchbase 不会导致错误,但与它交谈似乎是个问题,而且一旦出错,应用程序就无法工作。这可能不是应用程序组件的错,而是由于 AWS 配置的问题。
【问题讨论】:
-
顺便说一句,这里是来自 NodeJS 应用程序的控制台日志:ubuntu@ip-172-31-13-231:~/mmc$ node ./bin/www 打开 CB 连接... 过去的连接... index - SessionID: 991pOoY1mrzo_49cJf5hWmQrHc2xzti7 错误:建立 TCP 连接时出错 GET / 304 2507ms GET /stylesheets/pure-min.css 500 2532ms - 1.36kb ... 剩下的空间被省略了,只是更多的 500s
标签: node.js express amazon-ec2 pug