узел 'pg' не закрывает соединения с postgres на client.end () - PullRequest
0 голосов
/ 27 марта 2020

Мне кажется, что мои скрипты, использующие pg, не могут закрывать соединения. Это происходит не всегда (но в большинстве случаев), и количество открываемых соединений не соответствует шаблону, но такой простой сценарий, как этот, запускается через узел node {script_path}:

const Client = require('pg').Client;

const client = new Client({
  connectionString: `${process.env.DB_CONNECTION_STRING}`
});

const executeCommand = async () => {
  try {
    await client.connect();

    console.log('clearing lock queue...');
    await client.query('DELETE FROM lock_queue');
    console.log('lock queue cleared successfully');

    console.log('closing connection...');
    await client.end();
    console.log('closed connection');
  } catch (e) {
    console.error(`? error clearing lock table: ${e}`);
    client.end();
  }
};

(async () => {
  await executeCommand();
})();

выдаст следующий вывод консоли

clearing lock queue...
lock queue cleared successfully
closing connection...
closed connection

, но часто lsof -i :5432 будет показывать следующее после запуска этого скрипта

COMMAND    PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     38213 myusername   29u  IPv4 0xb8f375045cd647b5      0t0  TCP localhost:53611->localhost:postgresql (ESTABLISHED)
node     38214 myusername   29u  IPv4 0xb8f375047e6abd15      0t0  TCP localhost:53608->localhost:postgresql (ESTABLISHED)
node     38215 myusername   29u  IPv4 0xb8f375046b2d717d      0t0  TCP localhost:53609->localhost:postgresql (ESTABLISHED)
node     38216 myusername   29u  IPv4 0xb8f375047e67217d      0t0  TCP localhost:53607->localhost:postgresql (ESTABLISHED)
node     38217 myusername   29u  IPv4 0xb8f375047e6ee50d      0t0  TCP localhost:53613->localhost:postgresql (ESTABLISHED)
node     38217 myusername   30u  IPv4 0xb8f375046b2dac2d      0t0  TCP localhost:53614->localhost:postgresql (ESTABLISHED)
postgres 40937 myusername    5u  IPv6 0xb8f37504667d665d      0t0  TCP localhost:postgresql (LISTEN)
postgres 40937 myusername    6u  IPv4 0xb8f375045cd6b34d      0t0  TCP localhost:postgresql (LISTEN)
postgres 41102 myusername   11u  IPv4 0xb8f375047e6adb45      0t0  TCP localhost:postgresql->localhost:53607 (ESTABLISHED)
postgres 41103 myusername   11u  IPv4 0xb8f375047e69d17d      0t0  TCP localhost:postgresql->localhost:53608 (ESTABLISHED)
postgres 41104 myusername   11u  IPv4 0xb8f3750463b3a5f5      0t0  TCP localhost:postgresql->localhost:53609 (ESTABLISHED)
postgres 41107 myusername   11u  IPv4 0xb8f37504688305f5      0t0  TCP localhost:postgresql->localhost:53611 (ESTABLISHED)
postgres 41109 myusername   11u  IPv4 0xb8f375047e6e517d      0t0  TCP localhost:postgresql->localhost:53613 (ESTABLISHED)
postgres 41110 myusername   11u  IPv4 0xb8f375047e6c47b5      0t0  TCP localhost:postgresql->localhost:53614 (ESTABLISHED)

Кажется, что нет шаблона для количество установленных соединений, которые я вижу здесь ☝️ - иногда оно больше, а иногда меньше.

Другие разработчики не могут воспроизвести это, но все они на macOS 10.14.6, а я на 10.15 0,3. Мы используем Postgres 9,6 (?‍♂) и узел 10.17. Я попытался против Postgres 12 и все еще столкнулся с проблемой.

Есть идеи? Могу ли я предоставить дополнительную информацию?

...