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

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

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

14 ответов

13 просмотров

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 может "ломать" некоторые приложения, особенно если используется пуллинг на стороне приложения, но вероятно вы это и так понимаете.

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

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

Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Где закоментить или что то прописать?
Alibek Кulseitov 🇰🇿
7
Карта сайта