我在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
的数字海洋水滴答案 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
上述链接中讨论的可能解决方案是:
我决定选择配置交换文件。
以下链接提供有关配置交换文件的详细信息: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
答案 1 :(得分:0)
在执行查询时,您必须不关闭mysql连接。如果你保持连接打开,它会在一段时间后放弃。
node-mysql中也有一个错误。您可以使用mysql池。enter link description here