172 похожих чатов

Не подскажете, 1. можно ли как-то в постгресе глнуть, что

это за коннекты (откуда они идут?)
2. Можно ли как-то отслеживать "зависшие" коннекты и закрывать, например, спустя час?

14 ответов

33 просмотра

pg_stat_activity view

Роман Жарков
pg_stat_activity view

а где лучше закрывать "такие" идле коннекты? на стороне бд? или пгбаунсер (или он тут ни при чём?))

Не выходи из комнаты.
а где лучше закрывать "такие" идле коннекты? на ст...

Где мешают, там и закрывать. Мне на баунсере не мешали никогда.

Не выходи из комнаты.
а где лучше закрывать "такие" идле коннекты? на ст...

Вопрос должен быть в том зачем вам idle коннекты закрывать и чем они вам мешают. Если у вас pgbouncer - то эти idle коннекты это часть его нормальной работы. Можно конечно выставить/уменьшить timeout закрытия, но зачем? Не в смысле что это вообще никогда не нужно, но вам нужно себе ответить на этот вопрос.

SET SESSION idle_in_transaction_session_timeout = '1000'; через секунду закроет

Ilya Serbin
Вопрос должен быть в том зачем вам idle коннекты з...

ну то, что они так растут — не очень хорошо, кажется. Если idle + active начинает превышать max_connections — начинаются проблемы в приложении. понятно, что проблема на стороне аппки и нужно там фиксить, но пока там разберёмся, думаю сделать такой костыль на стороне бд

Не выходи из комнаты.
ну то, что они так растут — не очень хорошо, кажет...

Значит у вас неправильно настроены pool'ы в баунсере, а не idle'ы вам нужно закрывать. Или пулы в приложении, если баунсер не используется. Изменить размер пула кажется проще, чем городить костыль по отстрелу

Ilya Serbin
Значит у вас неправильно настроены pool'ы в баунсе...

а что тут может быть не так? [databases] {{ POSTGRES_DB }} = host=db port={{ POSTGRES_PORT }} [pgbouncer] listen_addr = 0.0.0.0 listen_port = 5432 unix_socket_dir = auth_file = /etc/pgbouncer/userlist.txt auth_type = plain pool_mode = session max_client_conn = 285 default_pool_size = 290 ignore_startup_parameters = extra_float_digits # Log settings admin_users = {{ POSTGRES_USER }}

ну пользователей N количество может быть, если я верно понял

Не выходи из комнаты.
ну пользователей N количество может быть, если я в...

У вас бред в настройках. Вы лимитите баунсеру на вход не более 285 пользователей, а лимит пула ставите 290. Перечитайте внимательно документацию баунсера по этим параметрами и переделайте в соответствии с тем что ам нужно

Ilya Serbin
У вас бред в настройках. Вы лимитите баунсеру на в...

да его писали кто как умеет) сейчас буду читать, спасибо.

Не выходи из комнаты.
да его писали кто как умеет) сейчас буду читать, с...

Сделайте select datname, usename, count(*) from pg_stat_activity group by datname, usename order by 3 desc; Так понятней будет

Ilya Serbin
Сделайте select datname, usename, count(*) from pg...

``` datname | usename | count ---------------+-------------------+------- bot_db | bot | 89 | | 4 bot_db | postgres_exporter | 2 | bot | 1 ```

Не выходи из комнаты.
``` datname | usename | count --...

В нынешних настройках у вас не должно быть больше 285 подключений от баунсера в бд, потому что max_client_conn = 285, а postgres_exporter вряд ли будет спаунить больше чем он ест сейчас. Уменьшите default_pool_size до какой-нибудь сотни, на max_client_connections поставьте 1000, pool_mode = transaction, и разбирайтесь почему у вас приложение спаунит столько коннектов к бд. Выставление pool_mode = transaction может "ломать" некоторые приложения, особенно если используется пуллинг на стороне приложения, но вероятно вы это и так понимаете.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта