NodeJS + MySQL网络应用程序中的ECONNREFUSED错误

时间:2017-11-24 03:53:29

标签: mysql node.js node-modules pm2 econnrefused

我在NodeJS + MySQL上运行了web应用程序。最初,Web应用程序工作正常,但突然之间MySQL连接被拒绝,并抛出以下错误:

ECONNREFUSED 127.0.0.1:3306

只需使用 pm2重新加载重新启动服务器即可暂时解决问题。但是经过很长一段时间后,上述错误再次出现。

NodeJS中用于建立MySQL连接的配置如下:

"sqlconn": {
        "connectionLimit": 10,
        "host": "127.0.0.1",
        "user": "root",
        "password": "XYZ",
        "database": "test",
        "port": 3306,
        "multipleStatements": true
}

有关如何解决此问题的任何想法?

注意:我正在使用RAM大小为512MB

的数字海洋水滴

2 个答案:

答案 0 :(得分:1)

要检查出错的地方,我打开了MySQL日志文件:

/var/log/mysql/error.log

日志内容如下:

InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
InnoDB: Cannot allocate memory for the buffer pool
InnoDB: Plugin initialization aborted with error Generic error
Plugin 'InnoDB' init function returned error.
Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Failed to initialize plugins.

原因是 Mysql无法重启,因为内存不足

要解决内存问题,可以遵循以下答案:https://stackoverflow.com/a/32932601/3994271

上述链接中讨论的可能解决方案是:

  • 增加RAM大小,或
  • 配置交换文件

我决定选择配置交换文件

以下链接提供有关配置交换文件的详细信息: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

答案 1 :(得分:0)

在执行查询时,您必须不关闭mysql连接。如果你保持连接打开,它会在一段时间后放弃。

node-mysql中也有一个错误。您可以使用mysql池。enter link description here