sql >> Database >  >> RDS >> Mysql

Node.js, Request, MySQL en Connection Pooling leiden tot oneindig blokkerings-/bevriezingsgedrag?

U gebruikt een synchrone lus om een ​​asynchrone resource te implementeren. Dat kun je niet doen.

Uw while-lus vult de database-pool en loopt dan opnieuw en blokkeert op getConnection die vervolgens de hele Node.js-gebeurtenislus blokkeert.

U kunt de async . gebruiken pakket om asynchrone while-loops uit te voeren.

De async#forever oproep zou doen wat u probeert te bereiken.

Ook lekt uw code databaseverbindingen. U moet de connection.end() eerst in de callback, tenzij u dezelfde verbinding opnieuw gaat gebruiken. Anders zal een fout een databaseverbinding lekken.

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. MYSQL JOIN op meerdere tafels geeft geen resultaten

  2. RDBMS versus NoSQL

  3. Hoe de permanente verbinding van mysqli op verschillende pagina's te gebruiken?

  4. Aan de slag met Oracle Autonomous Database in the Cloud