powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как равершить сессию по pid ? (pg_terminate_backend не работает)
19 сообщений из 19, страница 1 из 1
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793078
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, добрый день.

Имеется несколько сессий, которые в состоянии active и не реагируют на pg_terminate_backend.



Подскажите пожалуйста, как их можно завершить\остановить?
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793082
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам запрос, который они выполняют, не имеет dblink-ов.


Запрос этот выполняется примерно за 8 часов.


У меня подозрение, что это при перезапуске приложения они каким-то образом не завершились и стали бессмертными...
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793086
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pg_cancel_backend - тоже не влияет на них
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793089
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видел подобное, когда запрос имеет dblink, но тут нет дблинка...
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793110
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

dblink - частный случай использования посторонних ресурсов. Аналогично к такому эфекту могут привести FDW, функции на plpython и т.д. Покажи выборку, особенно содержимое query в развернутой форме
Код: plsql
1.
2.
SELECT * FROM pg_stat_activity 
where state = 'active' and <фильтр по этим висякам>
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793118
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DSKaluginСиний Слон,

dblink - частный случай использования посторонних ресурсов. Аналогично к такому эфекту могут привести FDW, функции на plpython и т.д. Покажи выборку, особенно содержимое query в развернутой форме
Код: plsql
1.
2.
SELECT * FROM pg_stat_activity 
where state = 'active' and <фильтр по этим висякам>





Проверил, все откуда ведется выборка находится как таблицы:

Код: sql
1.
SELECT * FROM pg_tables WHERE tablename='табличка_из_запроса'



Никаких функций в запросе нет.
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793127
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В условиях запроса есть WITH RECURSIVE, который сам по себе выполняется мнгновенно, и возвращает 3 строчки.
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793149
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,
Сложно гадать не имея ни одного конкретного запроса. В таких случаях отвечают "Ошибка в 7й строке"
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793170
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DSKaluginСиний Слон,
Сложно гадать не имея ни одного конкретного запроса. В таких случаях отвечают "Ошибка в 7й строке"

Запрос как запрос, обычный SELECT с парой JOIN и условием WHERE id IN ( WITH RECURSIVE .... ).
Без функций,FWD, dblink и прочего, просто селект.
Выполняется он долго и на другом подобном сервере.




Вопрос в том, как его принудительно завершить?
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793171
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с дблинком-то понятно там достаточно завершить дочерний процес и он убивается.

А тут что ему не дает завершиться?
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793174
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

какая версия базы? мастер или реплика? потребляет ли процесс cpu или диски ? сколько уже висит?
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793180
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий СлонDSKaluginСиний Слон,
Сложно гадать не имея ни одного конкретного запроса. В таких случаях отвечают "Ошибка в 7й строке"

Запрос как запрос, обычный SELECT с парой JOIN и условием WHERE id IN ( WITH RECURSIVE .... ).
Без функций,FWD, dblink и прочего, просто селект.
Выполняется он долго и на другом подобном сервере.




Вопрос в том, как его принудительно завершить?

покажите текст. если стесняетесь -- сведите боевой запрос к модельному, с теми же свойствами и покажите текст модельного.

какие-то расширения используете ?
какие-то функции вызываете ?
какие операторы накрайняк, особо если не слишком стандартные.

вот это вот всё.

и таки покажите вывод строки пг-стат-активити.
//дальше -- больше
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793192
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если backend не реагирует на pg_terminate_backend - значит не встретил CHECK_FOR_INTERRUPTS. Почему долго нет CHECK_FOR_INTERRUPTS - нужны детали чем занят backend, в идеале вместе с backtrace от gdb.

Без pg_terminate_backend - можно сложить кластер и поднять обратно.
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793201
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexiusСиний Слон,

какая версия базы? мастер или реплика? потребляет ли процесс cpu или диски ? сколько уже висит?



9.4 на винде.
мастер (без реплики)
Ест рессурсы (CPU,disc)

Про весит не понял.
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793204
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkijесли backend не реагирует на pg_terminate_backend - значит не встретил CHECK_FOR_INTERRUPTS. Почему долго нет CHECK_FOR_INTERRUPTS - нужны детали чем занят backend, в идеале вместе с backtrace от gdb.

Без pg_terminate_backend - можно сложить кластер и поднять обратно.


Да, мне тоже очень хочется разобраться.


Подскажите, пожалуйста, как эти детали достать:
>нужны детали чем занят backend, в идеале вместе с backtrace от gdb
?
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793208
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkijБез pg_terminate_backend - можно сложить кластер и поднять обратно.

Это, как я понял, рестарт кластера.
Оставим на крайний случай.

Запросы эти выполняются примерно 8 часов и сессия пропадает.
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793213
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqСиний Слонпропущено...


Запрос как запрос, обычный SELECT с парой JOIN и условием WHERE id IN ( WITH RECURSIVE .... ).
Без функций,FWD, dblink и прочего, просто селект.
Выполняется он долго и на другом подобном сервере.




Вопрос в том, как его принудительно завершить?

покажите текст. если стесняетесь -- сведите боевой запрос к модельному, с теми же свойствами и покажите текст модельного.

какие-то расширения используете ?
какие-то функции вызываете ?
какие операторы накрайняк, особо если не слишком стандартные.

вот это вот всё.

и таки покажите вывод строки пг-стат-активити.
//дальше -- больше


Да в том-то и дело что это обычный SELECT, без функций.

Вот такого примерно вида:

Код: sql
1.
2.
3.
4.
5.
SELECT id FROM t1
JOIN t2...
JOIN t3...
LEFT JOIN t4...
WHERE id IN (WITH RECURSIVE ... AS.... SELECT...)
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793218
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,

смотрю "backtrace от gdb"

под виндоус есть ли он вообще?
...
Рейтинг: 0 / 0
Как равершить сессию по pid ? (pg_terminate_backend не работает)
    #39793290
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

по такой экзотике не подскажу. Попробуйте начать читать отсюда: https://wiki.postgresql.org/wiki/Getting_a_stack_trace_of_a_running_PostgreSQL_backend_on_Windows
Ну и 9.4 - это печально. Практически EOL
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как равершить сессию по pid ? (pg_terminate_backend не работает)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]