Javascript 连接一建立就失去连接-NodeJS/MYSQL

Javascript 连接一建立就失去连接-NodeJS/MYSQL,javascript,mysql,node.js,Javascript,Mysql,Node.js,在过去的几天里,我遇到了一个问题,我的节点应用程序需要一个连接打开一段时间,一旦建立连接,它就会持续崩溃。这个问题是在我的应用程序运行了几个月之后突然出现的。我的虚拟机在此之前崩溃,现在我无法停止连接丢失错误。我的应用程序和mySQL数据库托管在同一台服务器上 错误是: { Error: Connection lost: The server closed the connection. at Protocol.end (/root/OTB/node_modules/mysql/lib/pro

在过去的几天里,我遇到了一个问题,我的节点应用程序需要一个连接打开一段时间,一旦建立连接,它就会持续崩溃。这个问题是在我的应用程序运行了几个月之后突然出现的。我的虚拟机在此之前崩溃,现在我无法停止连接丢失错误。我的应用程序和mySQL数据库托管在同一台服务器上

错误是:

 { Error: Connection lost: The server closed the connection.
at Protocol.end (/root/OTB/node_modules/mysql/lib/protocol/Protocol.js:112:13)
at Socket.<anonymous> (/root/OTB/node_modules/mysql/lib/Connection.js:97:28)
at Socket.<anonymous> (/root/OTB/node_modules/mysql/lib/Connection.js:525:1)
at emitNone (events.js:111:2)
at Socket.emit (events.js:28:7)
at endReadableNT (_stream_readable.js:164:12)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickCallback (internal/process/next_tick.js:181:9)
--------------------
at Protocol._enqueue (/root/OTB/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/root/OTB/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (/root/OTB/node_modules/mysql/lib/Connection.js:119:18)
at Connection._implyConnect (/root/OTB/node_modules/mysql/lib/Connection.js:457:1)
at Connection.query (/root/OTB/node_modules/mysql/lib/Connection.js:199:8)
at Timeout.keepalive [as _onTimeout] (/root/OTB/appl.js:248:7)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:29:5) fatal: true, code: 'PROTOCOL_CONNECTION_LOST' }
我还尝试了一些参数,比如

        agent: false,
        connector: "mysql",
        connectTimeout  : 60 * 60 * 1000,
        aquireTimeout   : 60 * 60 * 1000,
        timeout         : 60 * 60 * 1000,
        pool: {maxConnections: 10000, maxIdleTime: 10000}
编辑2:其他信息

我可能发现我的代码有问题。很可能我没有正确使用连接池。因此,我有多个函数对我的数据库进行查询,创建连接的正确方法是什么


我最初为创建的每个函数都有一个单独的池,我认为这是不正确的,但即使在函数之外有一个池声明,并且每个函数调用
pool.getConnection
,它也不起作用。这是正确的方法吗?正如我之前提到的,这段代码已经运行了几个月没有问题。

尝试这两个选项,可能会有所帮助。 一,

二,


尝试这两个选项,可能会有所帮助。 一,

二,


在崩溃发生之前有什么变化吗?请提供您的脚本以便我们检查是否有任何错误,您是否尝试重新启动MySQL服务?我个人从未改变过任何事情。我已经试着重新启动虚拟机,服务,一切。我用我的设置示例Cedric编辑了我的问题,这是基本池设置。服务器崩溃的原因也与此无关,我的服务器内存不足,崩溃了。在重新启动所有应用程序后,我注意到了这个问题。可能是某些MySQL表损坏了吗?在崩溃发生之前是否有任何更改?请提供您的脚本以便我们检查是否有任何错误,您是否尝试重新启动MySQL服务?我个人从未更改过任何内容。我已经试着重新启动虚拟机,服务,一切。我用我的设置示例Cedric编辑了我的问题,这是基本池设置。服务器崩溃的原因也与此无关,我的服务器内存不足,崩溃了。在重新启动我所有的应用程序后,我注意到了这个问题。可能是一些MySQL表损坏了吗?不幸的是,结果是一样的。谢谢你的建议,但不幸的是,这也得到了同样的结果。谢谢你的建议
        agent: false,
        connector: "mysql",
        connectTimeout  : 60 * 60 * 1000,
        aquireTimeout   : 60 * 60 * 1000,
        timeout         : 60 * 60 * 1000,
        pool: {maxConnections: 10000, maxIdleTime: 10000}
var connection;
    function connectDb() {
  connection  = mysql.createConnection({
    host: 'localhost',
    user: '--',
    database: '---',
    password: '----'
  });
  connection.on('error', connectDb()); // probably worth adding timeout / throttle / etc
}
const pool = mysql.createPool({
  host: 'localhost',
  user: '--',
  database: '---',
  password: '----'
});

// ... later
pool.query('select 1 + 1', (err, rows) => { /* */ });