Обычно фреймворки и промежуточное ПО поддерживают соединение открытым (или: пул соединений).Проблема, скорее всего, заключается в вашем коде node.js (или его использовании).Кстати, если у вас есть доступ к лог-файлам postgres, вы, вероятно, можете увидеть явные отключения от node.js.(чтобы увидеть это, оба log_connections и log_disconnections должны быть установлены в True)
Connect + отключение считается дорогой операцией (трафик TCP, авторизация, разветвление рабочего процесса (для postgres), настройка сеанса, ведение журнала (учет?)).Но если это работает для вас (или у вас есть только один запрос + ответ для сеанса), все в порядке.
Стоимость / использование ресурсов оценки :
Для настройки сеанса:
- Настройка соединения TCP / IP: 2 * 2 IP-пакета: = 4 * задержка туда и обратно
- логин / пароль:
- 2 * 2 чтения TCP: = 4 * двусторонние задержки
- 4 системных R / W вызовов
- несколько запросов / запросов к базе данных для авторизации пользователя (скажем, 10 ... 100 операций чтения с диска; в основном кэшируются)
- построение сеанса: = форк (для postgres) + множество клонированных страниц COW (? 100-1000 сбоев страниц?)
- инициализация сеанса: = несколько циклов
для запроса:
- запрос отправки + получения: = несколько циклов TCP / IP
- анализ: = несколько (1 ...100) поиск в каталоге (в основном из дискового кэша)
- execute: = xxx чтение с диска (возможно из кэша)
- выборка и сохранение результатов: = выделение (грязные) буферы
- отправить результаты: =xxx приемы по TCP
- сбросить буферы результатов: = (почти бесплатно!)
Разрыв сеанса:
- 3 * 2 обходов IP
- exit () дочернего процесса, wait () для родительского процесса (извините, я думаю в терминах unix; -)
- 1 дескриптор сокета в состоянии TIME_WAIT в течение нескольких секунд /минут
Как видите, объем ресурсов, расходуемых на создание соединения, составляет 10, а может быть, в 100 раз больше, чем будет стоить типичный запрос + результат;если у вас есть более одного запроса для выполнения, будет разумно оставить соединение открытым.(или поддерживать пул открытых соединений)
Для простоты я проигнорировал потребление процессора и главным образом проигнорировал использование памяти / буфера.В настоящее время процессор кажется практически бесплатным;количество вычислений, которое можно выполнить при ожидании диска (10 мс) или сети (х мс), невероятно: несколько (100 ... 10K?) тактов на байт.