【问题标题】:Losing Database Connection on Amazon Ec2 ServerAmazon Ec2 服务器上的数据库连接丢失
【发布时间】:2014-11-28 04:29:22
【问题描述】:

在过去的几个月里,我遇到了一个问题,我在亚马逊 ec2 服务器上部署了我的应用程序,但我每天至少会遇到 10 到 30 次这些错误。

1) Error: connect ETIMEDOUT
    at errnoException (net.js:904:11)
    at Object.afterConnect [as oncomplete] (net.js:895:19)

2) Error: getaddrinfo ENOTFOUND
     at errnoException (dns.js:37:11)
     at Object.onanswer [as oncomplete] (dns.js:124:16)
     --------------------
    at Handshake.Sequence                                            (/var/app/current/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:20)
at new Handshake (/var/app/current/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
at Protocol.handshake (/var/app/current/node_modules/mysql/lib/protocol/Protocol.js:42:50)
at Connection.connect (/var/app/current/node_modules/mysql/lib/Connection.js:72:18)
at module.exports.connect (/var/app/current/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:276:16)
at Object.pool.Pooling.Pool.create (/var/app/current/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:125:19)
at createResource (/var/app/current/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:258:13)
at dispense (/var/app/current/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:250:9)
at Object.me.acquire (/var/app/current/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:316:5)
at module.exports.enqueue (/var/app/current/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:320:19)

3) TypeError: Uncaught, unspecified "error" event.
at TypeError (<anonymous>)
at EventEmitter.emit (events.js:74:15)
at Handshake._callback (/var/app/current/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:286:19)
at Handshake.Sequence.end (/var/app/current/node_modules/mysql/lib/protocol/sequences/Sequence.js:75:24)
at Protocol.handleNetworkError (/var/app/current/node_modules/mysql/lib/protocol/Protocol.js:238:14)
at Connection._handleNetworkError (/var/app/current/node_modules/mysql/lib/Connection.js:155:18)
at Socket.EventEmitter.emit (events.js:117:20)
at net.js:830:16
at process._tickDomainCallback (node.js:459:13)

知道如何解决这些问题吗?

在此处发布之前,我也在 github 上发布了类似的问题,但我得到的答案令人不满意,这是亚马逊的问题,许多人都面临着这个问题。

那么大家有什么关于这个问题的建议或解决方案吗?

【问题讨论】:

  • 您能否再描述一下您的部署?节点应用程序是否在 linux 上运行? mysql 服务器是否与节点应用程序位于同一 VM 上?如果不是,它是通过不可路由的本地 IP 地址还是公共 IP 地址寻址的?它是否部署在亚马逊 RDS 实例上?您是否修改了节点应用程序 VM 上的 DNS 设置?
  • 是节点应用在linux上运行,而mys sql server不在同一个VM上,它部署在amazon RDS实例上。

标签: node.js amazon-ec2 amazon sequelize.js node-mysql


【解决方案1】:

您的错误号 2 是我几天前卡住的地方,我通过 clouddueling 找到了解决方案 , 这里 https://github.com/aws/aws-sdk-js/issues/55

如果您没有遇到亚马逊问题,希望这会有所帮助。

【讨论】:

    【解决方案2】:

    这实际上可能是 DNS 问题,具体取决于您的设置。根据您的问题,我假设 MySQL 数据库与您的应用程序安装在同一主机上,如果不是,则将适用相同的解决方案。

    编辑您的 hosts 文件并对您的 MySQL 主机名和 IP 地址进行硬编码,然后检查是否解决了您的问题。如果是这样,那么您需要检查您的域名服务器(使用 Google 的 8.8.8.8 和 8.8.4.4),并确保您已正确设置 DNS。

    永远不要硬编码任何东西,仅使用这种方法推断 DNS 是否确实是原因。

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2012-04-03
      • 2017-08-13
      • 2014-11-21
      • 1970-01-01
      • 2018-03-23
      相关资源
      最近更新 更多