sql >> データベース >  >> RDS >> Mysql

Node.js、リクエスト、MySQL、接続プールは無限のブロッキング/フリーズ動作につながりますか?

    同期ループを使用して非同期リソースをデプロイしています。それはできません。

    whileループがデータベースプールをいっぱいにしてから、もう一度ループしてgetConnectionをブロックします 次に、Node.jsイベントループ全体をブロックします。

    asyncを使用できます 非同期のwhileループを実行するパッケージ。

    async#forever 電話はあなたが達成しようとしていることをするでしょう。

    また、コードがデータベース接続をリークしています。 connection.end()を配置する必要があります 同じ接続を再度使用する場合を除いて、最初にコールバックを実行します。そうしないと、エラーによってデータベース接続がリークされます。

    pool.getConnection(function (err, connection) {
        if (err) throw err;
        connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
          connection.end(); // return to pool before evaluating error.
          if (err) throw err;
          console.log('The solution is: ', rows[0].solution);
        });
    });
    


    1. MacOSでmysqlルートパスワードを回復する方法

    2. MariaDBでのCEILING()のしくみ

    3. mysqlテーブル構造の提案?

    4. SQLServerの切り捨てと8192の制限