2017-11-26 28 views
0

私の接続が適切に解放されていないと思います。私のプールが限界に達したというエラーが表示されることがあります。また、ランダムにdbにアクセスすると15秒以上かかります。私はpool._allConnections.lengthを使用して使用されている、それはここでは60を超える何かを返すことはありませんどのように多くの接続をチェックするたびに私のコードです:Node.js MySQL接続が正しく解放されていない

const mysql = require('mysql'); 
const config = require('./config.json'); 

const pool = mysql.createPool({ 
    connectionLimit : 999, 
    host: config.host, 
    user: config.user, 
    password: config.password, 
    database: config.database 
}); 

const db = (() => { 

    _query = (query, params, callback) => { 
    pool.getConnection((err, connection) => { 

     if (err) { 
     callback(null, err); 
     } else { 
     connection.query(query, params, (err, rows) => { 
      connection.release(); 
      if (!err) { 
      callback(rows); 
      } else { 
      callback(null, err); 
      } 
     }); 
     } 

    }); 
    }; 

    return { 
    query: _query 
    }; 
})(); 

module.exports = db; 

答えて

0

私は私を助けてhttps://github.com/mysqljs/mysql/issues/1518同じ問題に直面してきました。通知行

ええ、それは問題でした。各 クエリでmysql.createPoolを呼び出していました。

実際にはクエリを呼び出すためにquery.jsからdbをインポートしています(あなたの郵便番号を言いましょう)。クエリを実行するたびに新しいプールが作成されます。この問題を解決するにはcreatePoolコードブロックをapp.jsに追加してグローバルに共有するか、他のコードスタイルでquery.jsで使用できます。 > connection.query - - (pool.endを呼び出し、> connection.release()フロー)pool.query方法はpool.getConnection ための短い手であるので 公式ドキュメントhttps://github.com/mysqljs/mysql#pooling-connections検索線

を参照しますpool.query経由で追加されたすべてのクエリが完了する前に、

後、私は、リリース接続

の頭痛を停止するために、これを使用
関連する問題