Arhn - архитектура программирования

Убить соединение postgre в консоли рельсов

Как я могу убить все соединения postgre с помощью консоли rails? Я получаю это:

PG::ConnectionBad
FATAL: sorry, too many clients already FATAL: sorry, too many clients already

Rails.root: C:/Users/IBM_ADMIN/Desktop/Work/Extreme Blue Summer Internship/extreme-blue

Application Trace | Framework Trace | Full Trace
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize'
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `new'
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect'
activerecord (4.2.7.1) lib/active_record/connection_adapters/pos

Дело в том, что я хочу не отбрасывать базу данных, а просто убить все подключения к ней? Любая помощь будет принята с благодарностью!

tgresql_adapter.rb: 242: в `инициализации '


  • Есть ли где-нибудь в вашем коде, где вы устанавливаете соединения? Возможно, связи остаются открытыми постоянно? 07.12.2016
  • stackoverflow.com/questions/2757549/ 07.12.2016

Ответы:


1

Как суперпользователь PostgreSQL вы можете использовать функцию pg_terminate_backend для завершения сеанса. Вы можете получить список идентификаторов внутренних процессов в представлении pg_stat_activity.

Таким образом, запрос может выглядеть так:

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid();

Чтобы не мешать работе, вы можете добавить AND state = 'idle'.

Убедитесь, что ваше приложение не подключается как суперпользователь, тогда всегда останется superuser_reserved_connections (по умолчанию 3) подключений, которые может использовать суперпользователь.

При этом ваше приложение действительно не должно превышать максимальное количество подключений. Если вы не можете этого гарантировать, используйте пул подключений, например pgBouncer.

07.12.2016
  • Спасибо @Laurenz за ваш ответ. Рельсы автоматически закрывают соединения, поскольку я не помню, чтобы писал какие-либо петли, которые должны позволить мне активные соединения 07.12.2016

  • 2

    Вы не можете использовать rails console для уничтожения процессов Postgres.

    Вам следует перезапустить Postgres, как бы вы ни запустили его (либо из командной строки, либо, например, из приложения PostgresApp), и он очистит текущие соединения.

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

    07.12.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..