node.jsでmysql2を利用してデータベースサーバーからデータを取得しています。
いつも一回目の接続はうまくいくのですが、そこから5分30秒~6分(タイマーで測ったので5分以上もつのは間違いないです。)、時間をあけると下記の箇所で
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:201:27) {
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read',
fatal: true
}
が発生します。
(5分30秒~6分経過するまでは何度クエリ送信しても通信できます。)
mysql(データベースサイド)のタイムアウトかもしれないと思い確認しました。
しかし、wait_timeout はデフォルトの8時間ですし、5分30秒~6分でタイムアウトする項目もありません。
このエラーはmysql側のタイムアウトエラーではないのでしょうか?
ほかの原因としてはどんなことが考えられるでしょうか?
どなたか詳しい方、お教えいただけないでしょうか。
よろしくお願いいたします。
mysqlConnectionjs
1var mysql = require('mysql2'); 2 3const dbConfig = { 4 host: xxxxxxx, 5 user: xxxxxx, 6 password:xxxxxxx, 7 port: xxxxx, 8 database: xxxxxx, 9 waitForConnections: true, 10}; 11 12// const dbConfig = mysql.createConnection(HhtmlConfig); 13 14var connection; 15 16function handleDisconnect() { 17 console.log('create mysql connection'); 18 connection = mysql.createPool(dbConfig); 19 20 //error時の処理 21 connection.on('error', function (err) { 22 console.log('db error', err); 23 if (err.code === 'PROTOCOL_CONNECTION_LOST') { 24 handleDisconnect(); 25 } else { 26 throw err; 27 } 28 }); 29 30 module.exports = connection; //connectionを(他のファイルから)requireで呼び出せるようにする 31} 32 33handleDisconnect();
実際にエラーが発生した箇所
server
1//略 2const connection = require('./mysqlConnection'); 3 4app.post('/getcreatorname', (req, res, err) => { 5 6 var sql = "SELECT user_name FROM users WHERE xxxxxxxxx"; 7 8 connection.query(sql, function (err, results) { 9 if(err){ 10 throw err 11 } 12 res.send(results); 13 }); 14}) 15 16//略
mysql のタイムアウト設定
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
+-----------------------------+----------+
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/26 10:24
2020/03/26 10:40
2020/03/26 11:16
2020/03/26 11:19
2020/03/26 14:17
2020/03/26 14:31
2020/03/27 02:57