【问题标题】:2 http servers for 2 services crashing in Node.js Bluemix app2 个服务的 2 个 http 服务器在 Node.js Bluemix 应用程序中崩溃
【发布时间】:2016-01-15 09:19:09
【问题描述】:

我正在尝试在 Node.js 中使用 express 启动 2 个 http 服务器,以监听 2 个 Bluemix 服务的请求。两者是分开工作,但不是一起工作。在部署期间,应用程序多次启动,但均未成功。日志中有意义的部分显示在所附图片上。

感谢您的建议,帮助!

<script src="//pastebin.com/embed_js/YghQ7eFC"></script>

Image about the log

【问题讨论】:

  • 错误输出是什么?
  • 你能把http.createServer(appQA).listen(process.env.VCAP_APP_PORT || 3001);修改成http.createServer(appQA).listen( 3001);吗?也许两台服务器监听同一个端口。
  • 我已经尝试过了,但它不起作用。但我也认为问题可能出在端口周围。

标签: javascript node.js express ibm-cloud


【解决方案1】:

为了整合前面正确解释正在发生的事情的响应(两个服务器绑定在同一个端口上),我必须补充一点,即使在本地您可以在两个不同的自定义端口上绑定两个实例,但在 Bluemix 上您不能有 2在同一运行时运行的实例,甚至是在不同端口上侦听的单个实例,因为流量仅在 http 端口 80(和 https 443)上路由 去做这个: - 有一个容器运行这两个节点实例 - 有两个运行时

【讨论】:

    【解决方案2】:

    错误日志显示分配的端口当前正在使用中。

    问题很可能在于以下代码:

    ... http.createServer(appDialog).listen(process.env.VCAP_APP_PORT || 3000); ... http.createServer(appQA).listen(process.env.VCAP_APP_PORT || 3001);

    如果分配了端口process.env.VCAP_APP_PORT,两者都将使用它,如果是,则会导致错误。

    要么创建一个新的ENV 值,要么将端口硬固定为不同的值。

    【讨论】:

    • 是的,我正在考虑这个问题并尝试将两个端口修复为 3000 和 3001,但行为是相同的。
    【解决方案3】:

    实际上,我能够通过仅对两个服务使用 1 个服务器来解决该问题。它现在正在工作,尽管没有修复 2 个并行工作的 http 服务器。我不是特定的 Node.js 大师,我并不是说这是唯一的解决方案。

    无论如何感谢您的提示!

    【讨论】:

    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多