sql >> Databáze >  >> RDS >> Mysql

Node.js, Request, MySQL a Connection Pooling vedou k nekonečnému blokování/zmrazování?

K nasazení asynchronního prostředku používáte synchronní smyčku. To nemůžete.

Vaše smyčka while zaplní fond databáze a poté se znovu zacyklí a zablokuje na getConnection který pak zablokuje celou smyčku událostí Node.js.

Můžete použít async balíček pro provádění asynchronních smyček while.

async#forever Call by udělal to, čeho se snažíte dosáhnout.

Z vašeho kódu také unikají databázová připojení. Měli byste vložit connection.end() první ve zpětném volání, pokud se nechystáte znovu použít stejné připojení. V opačném případě dojde při chybě k úniku databázového připojení.

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. Automatické připojení k PDO pouze v případě potřeby

  2. Pochopení důležitosti nastavení paměti v SQL Server

  3. Zastavit SQL v aktualizaci prázdných nebo prázdných polí z mého aktualizačního formuláře

  4. jak spojit hodnotu z jiné tabulky se stejnou hodnotou podmínky