Мне кажется, что мои скрипты, использующие 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 и все еще столкнулся с проблемой.
Есть идеи? Могу ли я предоставить дополнительную информацию?