PostgreSQL

Как отключить неактивные соединения в PostgreSQL

Как отключить неактивные соединения в PostgreSQL

Первым шагом при внесении изменений или чтении некоторой информации из банка данных PostgreSQL является установление соединений. С другой стороны, каждая ссылка создавала накладные расходы, используя процедуру и хранилище. Вот почему устройство с минимальными ресурсами (чтение, хранилище, оборудование) может поддерживать ограниченную совокупность подключений. Как только ограниченный агрегат выходит далеко за пределы точки, он должен продолжать выдавать ошибки или отказывать в соединениях. Внутри PostgreSQL.conf, PostgreSQL неплохо справляется с ограничением ссылок. В этом руководстве мы рассмотрим различные формы состояний, которые могут иметь ссылки PostgreSQL. Мы покажем вам, как определить, активна ли ссылка или была неактивна в течение длительного времени, в этом случае ее можно отключить, чтобы освободить ссылки и ресурсы.

Подключиться к серверу:

Вначале убедитесь, что pgAdmin4 полностью установлен в вашей компьютерной системе. Откройте его из ваших приложений. Вы должны подключить его к localhost, указав пароль.

После подключения к корневому локальному хосту подключите его к серверу PostgreSQL. Введите пароль пользователя PostgreSQL 13 'Postgres для подключения. Нажмите на кнопку ОК, чтобы продолжить.

Теперь вы подключены к серверу PostgreSQL 13. Вы можете увидеть список баз данных, находящихся на сервере, как показано на рисунке ниже. База данных Postgres - это база данных по умолчанию, созданная во время установки PostgreSQL, в то время как «тестовая» база данных была создана пользователем после установки.

Состояния подключения:

Если установлена ​​связь с PostgreSQL, она может выполнять различные действия, которые приводят к переходам между состояниями. Следует принять рациональное решение о том, работает ли ссылка или она оставалась неактивной / неиспользованной, в зависимости от состояния и продолжительности нахождения в каждом состоянии. Важно отметить, что до тех пор, пока приложение не закроет соединение намеренно, оно будет продолжать работать, тратя ресурсы еще долгое время после отключения клиента. Существует 4 возможных состояния подключения:

Определите состояния подключения:

Таблицы каталога PostgreSQL предоставляют встроенное представление pg_stat_activity для проверки статистики о том, что делает ссылка или сколько времени она находилась в этом состоянии. Чтобы проверить всю статистику по каждой базе данных и каждому состоянию соединения, откройте инструмент запроса и выполните следующий запрос:

>> ВЫБРАТЬ * ИЗ pg_stat_activity;

Запрос был реализован успешно, и была показана записка о выполнении.

Когда вы проверите его сторону вывода данных, вы найдете таблицу с несколькими столбцами, как показано ниже. Вы можете проверить состояния подключений, проверив значения поля «состояние».

Чтобы упростить вывод и иметь четкое представление о соединениях, их состояниях, пользователях и серверах в этих состояниях, вы должны выполнить измененный ниже запрос в инструменте запросов. В этом запросе отображаются только 5 полей записей для подключений и конкретные данные о них. Столбец pid обозначает идентификатор процесса. Столбец "состояние" содержит состояния процессов. Столбец usename определяет пользователя, который работал над определенным процессом. В столбце datname указано имя базы данных, в которой выполнялась транзакция. Столбец datid обозначает идентификатор базы данных.

>> SELECT pid, state, usename datname, datid, from pg_stat_activity;

На выходе всего записано 8 процессов. Столбец "состояние" показывает, что сейчас работают только 3 процесса. Один хранится в базе данных по умолчанию Postgres, а два других - в базе данных test. В то же время пользователь Postgres выполнял эти процессы.

Определите незанятые соединения:

«Состояние» кажется единственным значением, которое мы ищем в упомянутых выше результатах. Мы будем использовать эту информацию, чтобы определить, какие процессы или запросы в каком состоянии находятся, а затем копать глубже. Мы можем сократить количество деталей, которые мы ищем, уточнив запрос, что позволит нам подготовить вмешательство в это конкретное соединение. Мы могли бы сделать это, выбрав только незанятые PID с помощью предложения WHERE и состояния для этих PID. Мы также должны отслеживать, как долго ссылка была неактивной, и следить за тем, чтобы у нас не было забытых ссылок, разбазаривающих наши ресурсы. В результате мы будем использовать перефразированную ниже команду, чтобы отображать только записи, относящиеся к процессам, которые в данный момент простаивают:

>> ВЫБЕРИТЕ pid, usename, usesysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'idle';

Запрос получил только 2 записи данных, в которых состояние было 'idle', с использованием предложения WHERE. Результат показывает 2 незанятых процесса с определенной информацией о них.

Убить простаивающее соединение:

После выявления незанятых подключений, теперь пора их убить. После того, как мы сократили процесс либо в состоянии ожидания, либо в неактивном состоянии намного дольше, мы могли бы использовать простую команду, чтобы легко завершить внутренний механизм, не нарушая активности сервера. Мы должны предоставить идентификатор процесса в запросе в функции завершения.

>> ВЫБРАТЬ pg_terminate_backend (7408);

Процесс был великолепно убит.

Теперь проверьте оставшиеся незанятые соединения из запроса ниже.

>> ВЫБРАТЬ данные, имя пользователя, имя данных, идентификатор, состояние FROM pg_stat_activity WHERE state = 'idle';

Вывод показывает только 1 оставшийся процесс, который простаивает.

Заключение:

Не пропустите ни одного шага, чтобы эффективно уничтожить неактивные соединения из базы данных PostgreSQL.

5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...