| From: | Aleksey Smart <a4irkin(at)gmail(dot)com> |
|---|---|
| To: | pgsql-ru-general(at)postgresql(dot)org |
| Subject: | Замороженные соединения: postgres_fdw, dblink |
| Date: | 2014-07-24 19:37:45 |
| Message-ID: | CAOfwqxWN5vBUyxBQ-aE4=Zb5vAGQRtO1eO9mwZ+cY+79m3wLGw@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-ru-general |
Доброго времени суток, господа!
Решил обратиться к вам за помощью, потому что не смог найти решения своей
проблемы.
Я создал подобие кластера из нескольких машин с PostgreSQL (9.3), каждая
машина может обращаться за данными к другим машинам посредством dblink, я
не стал использовать postgres_fdw, потому что предпочитаю создавать более
высокоуровневый api посредством функций, а через Foreign Data Wrapper можно
обращаться только к таблицам. Созданный мною кластер хорошо себя показал на
этапе тестирования, но после перевода в продакшн обнаружились серьезные
проблемы. Постепенно сервера заполнялись замороженными активными
соединениями, переполняя пул. PostgreSQL не хотел перезагружаться,
приходилось убивать процессы принудительно. После некоторых опытов
выяснилось, что дело в dblink. Если возникает deadlock (поймать его с
dblink можно легко) или же пропадает связь с удаленным сервером, dblink
вешает процесс соединения намертво. Даже экспериментируя в psql мне
удавалось повесить процесс. Что удивительно, statement_timeout пользователя
не действует в этом случае, процесс висит вечно. Это совсем плохо, в
надежде, что в fdw все исправили, я попробовал и получил то же самое. Я не
знаю что происходит на удаленном сервере, но я хочу иметь хоть какой-то
рабочий таймаут.
Как же теперь реализовать кластер не получив зависшие процессы?
---
Алексей
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alexey Vasiliev | 2014-07-25 15:02:55 | Re: [pgsql-ru-general] Замороженные соединения: postgres_fdw, dblink |
| Previous Message | Alexey Klyukin | 2014-07-24 09:08:12 | Re: [pgsql-ru-general] Мультимастер репликация |