1

我有在 NodeJS + MySQL 上运行的网络应用程序。最初,Web 应用程序运行良好,但突然间 MySQL 连接被拒绝,并引发以下错误:

ECONNREFUSED 127.0.0.1:3306

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

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

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

关于如何解决这个问题的任何想法?

注意:我使用的是 RAM 大小为 512MB 的数字海洋水滴

4

2 回答 2

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 大小,或
  • 配置交换文件

我决定去配置一个 swapfile

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

于 2017-11-24T08:22:20.913 回答
0

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

node-mysql 中也有一个错误。您可以使用 mysql 池。在此处输入链接描述

于 2017-11-24T04:06:26.997 回答