sql >> Databasteknik >  >> RDS >> Mysql

Node.js, Request, MySQL och Connection Pooling leder till oändligt blockerande/frysningsbeteende?

Du använder en synkron loop för att distribuera en asynkron resurs. Det kan du inte göra.

Din while-loop fyller upp databaspoolen och loopar sedan igen och blockerar getConnection som sedan blockerar hela Node.js-händelsslingan.

Du kan använda async paket för att utföra asynkrona while-loopar.

async#forever call skulle göra det du försöker uppnå.

Dessutom läcker din kod databasanslutningar. Du bör lägga in connection.end() först i återuppringningen om du inte ska använda samma anslutning igen. Annars kommer ett fel att läcka en databasanslutning.

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. Testa för säkerhetssårbarheter i webbapplikationer:Bästa metoder?

  2. visar data från sql från att klicka på svg-karta

  3. Runda .NET DateTime millisekunder, så det kan passa SQL Server millisekunder

  4. Hur man länkar en tabell till en backend-databas i Access 2016