|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Доброго дня. Переводим имеющиеся системы на схему с использованием pgbouncer. Системы разные и написаны на разных языках, от java до delphi, но фактически все сталкиваются с проблемами при переходе на pgbouncer (вот ни с одной не получилось как в различных гайдах по pgbouncer). Проблем в основном две: 1) если в настройках transaction, то надо отключать "предподготовку запроса"/кэширование на стороне приложения 2) если через соединение не идут запросы последние 30 секунд (по дефолту), то при следующем запросе, сперва будет восстанавливаться соединение и запрос не выполнится, а пройдет при повторном вызове. Как побеждать первое в целом понятно, но не для каждого языка и библиотеки подключения к базе, а вот потребность двойного обращения к базе, после 30 секундного простоя, это уже сложнее. Разве никто не сталкивается с такой проблемой? Как решали? У меня pgbouncer так ведет себя как в transaction, так и session режиме. Легко воспроизводится даже через консоль: 1) подключаюсь к базе, делаю запрос (всё ок) 2) Жду 30-40 секунд 3) Делаю запрос еще раз (получаю отлуп "server closed the connection unexpectedly. This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded.") 4) Делаю повторный тот же запрос (получаю данные) Как итог всего, недовольство владельцев/внедренцев систем, мол "pgbouncer не работает", хотя это их системы не могут работать с pgbouncer без напильника ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 12:38 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
А зачем вам вообще pgbouncer? Это крайне нишевое решение для софта, который открывет/закрывает соединения на каждое выполнение, десятками и сотнями в секунду (веб на perl-скриптах и т.п.). ИМХО, это специально надо писать все имеющиеся системы, чтобы так извращённо работать с БД. И не забывайте, что pgbouncer - однопоточная штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 13:21 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Scott Tiger А зачем вам вообще pgbouncer? Это крайне нишевое решение для софта Повеселил - спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 13:33 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
mefman Scott Tiger А зачем вам вообще pgbouncer? Это крайне нишевое решение для софта Повеселил - спасибо А по делу возразить можете? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 14:10 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Scott Tiger А зачем вам вообще pgbouncer? Это крайне нишевое решение для софта, который открывет/закрывает соединения на каждое выполнение, десятками и сотнями в секунду (веб на perl-скриптах и т.п.). ИМХО, это специально надо писать все имеющиеся системы, чтобы так извращённо работать с БД. И не забывайте, что pgbouncer - однопоточная штука. Крайне странное утверждение.... нагруженный проект на postgresql без pgbouncer идея крайне крайне плохая. Postgresql архитектурно плохо работает с сотнями открытых коннектов (и тем более с тысячами) и поэтому connection pooler в транзакционном режиме почти обязателен (кроме случая когда у вас с базой работает ОДИН (а не десять или сто) backend со своим пулом коннектов). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 15:05 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
D0KX Доброго дня. Переводим имеющиеся системы на схему с использованием pgbouncer. Системы разные и написаны на разных языках, от java до delphi, но фактически все сталкиваются с проблемами при переходе на pgbouncer (вот ни с одной не получилось как в различных гайдах по pgbouncer). Проблем в основном две: 1) если в настройках transaction, то надо отключать "предподготовку запроса"/кэширование на стороне приложения 2) если через соединение не идут запросы последние 30 секунд (по дефолту), то при следующем запросе, сперва будет восстанавливаться соединение и запрос не выполнится, а пройдет при повторном вызове. Как побеждать первое в целом понятно, но не для каждого языка и библиотеки подключения к базе, а вот потребность двойного обращения к базе, после 30 секундного простоя, это уже сложнее. Разве никто не сталкивается с такой проблемой? Как решали? У меня pgbouncer так ведет себя как в transaction, так и session режиме. Легко воспроизводится даже через консоль: 1) подключаюсь к базе, делаю запрос (всё ок) 2) Жду 30-40 секунд 3) Делаю запрос еще раз (получаю отлуп "server closed the connection unexpectedly. This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded.") 4) Делаю повторный тот же запрос (получаю данные) Как итог всего, недовольство владельцев/внедренцев систем, мол "pgbouncer не работает", хотя это их системы не могут работать с pgbouncer без напильника 2 - никогда такого не было и быть не может/не должно у вас что то очень криво настроено... скорее всего сам pgbouncer у вас случайно client_idle_timeout не включен??? очень на него похоже... не зря этот timeout в разделе документации "Dangerous timeouts" https://www.pgbouncer.org/config.html#dangerous-timeouts -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 15:08 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Maxim Boguk Scott Tiger А зачем вам вообще pgbouncer? Это крайне нишевое решение для софта, который открывет/закрывает соединения на каждое выполнение, десятками и сотнями в секунду (веб на perl-скриптах и т.п.). ИМХО, это специально надо писать все имеющиеся системы, чтобы так извращённо работать с БД. И не забывайте, что pgbouncer - однопоточная штука. Крайне странное утверждение.... нагруженный проект на postgresql без pgbouncer идея крайне крайне плохая. Postgresql архитектурно плохо работает с сотнями открытых коннектов (и тем более с тысячами) и поэтому connection pooler в транзакционном режиме почти обязателен (кроме случая когда у вас с базой работает ОДИН (а не десять или сто) backend со своим пулом коннектов). Максим, расскажите подробнее об архитектурных проблемах postgresql с сотнями и тысячами idle коннектов с закрытыми транзакциями. Я такого не наблюдал, ну кроме очевидных нюансов со стороны ОС. Что касается сотни бэкендов, каждый со своим пулом: такая конструкция будет в большей степени ограничена предельным количеством активных сессий, после которого эффекты конкуренции за ресурсы (процессор, диски, блокировки, кэш и т.д.) приведут к неприемлемому росту времени отклика. Значит, суммарный для всех одновременно доступных бэкендов лимит на количество соединений в пуле не должен быть выше этого количества. Да, я знаю, как организационно сложно этого добиться, но это решаемая задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 17:45 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Scott Tiger Maxim Boguk пропущено... Крайне странное утверждение.... нагруженный проект на postgresql без pgbouncer идея крайне крайне плохая. Postgresql архитектурно плохо работает с сотнями открытых коннектов (и тем более с тысячами) и поэтому connection pooler в транзакционном режиме почти обязателен (кроме случая когда у вас с базой работает ОДИН (а не десять или сто) backend со своим пулом коннектов). Максим, расскажите подробнее об архитектурных проблемах postgresql с сотнями и тысячами idle коннектов с закрытыми транзакциями. Я такого не наблюдал, ну кроме очевидных нюансов со стороны ОС. Что касается сотни бэкендов, каждый со своим пулом: такая конструкция будет в большей степени ограничена предельным количеством активных сессий, после которого эффекты конкуренции за ресурсы (процессор, диски, блокировки, кэш и т.д.) приведут к неприемлемому росту времени отклика. Значит, суммарный для всех одновременно доступных бэкендов лимит на количество соединений в пуле не должен быть выше этого количества. Да, я знаю, как организационно сложно этого добиться, но это решаемая задача. Ооох придется писать простыню долгую 1)у postgresql 1 коннект - 1 процесс... Это значит что при 1000 коннектов имеем: 1000 регулярно активных процессов нагружают cpu scheduler, вызывают постоянное вымывание кеша процессора и лишние переключения контекста и миграции процессов между сокетами 1000 процессов базы в пределе занимают (и легко могут занимать) 1000*work_mem например 32GB памяти просто на себя при не сильно большом 32MB work_mem 1000 процессов базы когда у вас будет много shared buffers (ну там 100 или 200GB) и не включены huge_pages.... вы получите в пределе еще 100-200GB занятых в PageTables памяти ядра системы (и долго будете искать куда же у вас память испарилась и почему ООМ пришел или swap) (точнее в самом паталогическом случае 100GB shared buffers при 1000 долгоживущих коннектов без huge pages у вас могут занять до 100*1024*1024*1024/4096*4*1000/(1024*1024*1024) = 96GB памяти просто под PageTables системные... это нежданчик про который мало кто знает Внутренние структуры (ProcArray) у postgresql очень фигово масштабируются на тысячи коннектов и там начинается очень большой overhead и потери на сихронизацию в 2 и 4х сокетных серверах. Что же касается "Значит, суммарный для всех одновременно доступных бэкендов лимит на количество соединений в пуле не должен быть выше этого количества. " - фиг там не работает оно так... потому что сейчас одному backend надо 1 коннект а другому 40... через секунду наоборот... в итоге лимиты по коннектам у backend приходится ставить очень высокие (под реально требуемый пик возникающий при рабочей нагрузке) потому что быстро установить дополнительные 10-20-30 коннектов к базе по потребности не получается (установление коннекта к postgresql крайне дорогое потому что tcp сессия + форк нового процесса). На практике же на одном моем проекте где по ряду причин таки отказались от pgbouncer постоянно установлено 1500 коннектов к базе (от 50 чтоли backends) при этом даже в самое пиковое время больше 40 одновременно запросов на базе не работают (и ни на какой другой конфигурации не получилось получить гарантированное время отклика для 99% персентиля), но там можно себе позволить 1500 коннектов потому что а)512GB памяти на сервере 2)400% запас по CPU и потери на неэффективность из пункта 1 не так важны (а вот SLA и время ответа для 99% и 99.9% - важно). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 21:48 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Maxim Boguk, нет не включен. Даже посмотрел полный конфиг, через базу pgbouncer. client_idle_timeout = 0 ; Из того, что меняли/прописали в конфиге можно выделить: - auth_type = md5 - default_pool_size = 30 - pool_mode = session (или transaction) - max_client_conn = 500 - ignore_startup_parameters = extra_float_digits pgbouncer 1.14.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 13:40 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
D0KX Maxim Boguk, нет не включен. Даже посмотрел полный конфиг, через базу pgbouncer. client_idle_timeout = 0 ; Из того, что меняли/прописали в конфиге можно выделить: - auth_type = md5 - default_pool_size = 30 - pool_mode = session (или transaction) - max_client_conn = 500 - ignore_startup_parameters = extra_float_digits pgbouncer 1.14.0 поскольку в реальных проектах такой проблемы не наблюдается - отлаживать в чем проблема - только вам... tcp dump / gdb в руки ... только вы вашу инфраструктуру знаете... как я уже написал - такого поведения как вы написали обычно не наблюдается. Еще как гипотеза у вас firewall режет tcp idle сессии или из за переполнения таблицы или по timeout. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 13:46 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Оно у вас часом не на виндузе? А то смотрю - приклад на дельфи... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 14:23 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
mefman Вы сами читали эту ерунду или специально тратите моё время? Товарищ Фернандо в неком синтетическом тесте на 56-процессорной машине получает 4506 TPS при работе с Postgresql напрямую в 56 потоков утилиты-нагружалки. На том же железе при увеличении числа потоков нагружения производительность внезапно падает. Contention и прочие страшные слова Фернандо, видимо, не знакомы - во всяком случае, исследовать проблему падения производительности он не пытается (или не пишет об этом), каких-либо метрик загруженности не приводит. Пациент не унимается, и втыкает один экземпляр pgbouncer между нагружалкой и Postgresql и в нём получает 1800 TPS при любом количестве потоков нагружения и размере пула pgbouncer, равном 56. При увеличении размера default_pool_size в какой-то момент производительность внезапно падает. При этом в начале статьи вполне корректно расписывается, чем плохо постоянно открывать/закрывать соединения, но вот сам скрипт нагружения https://github.com/Percona-Lab/sysbench-tpcc/blob/master/tpcc.lua соединение открывает в методе thread_init(), который выполняется один раз для каждого потока при запуске утилиты - см. https://www.percona.com/blog/2019/04/25/creating-custom-sysbench-scripts/ , т.е. конкретно в этой утилите нагружения проблемы, с которой собрался героически бороться пациент, вообще нет - все свои 56 или сколько задано через параметр "--threads" подключений утилита открывает при запуске, держит в ходе всей работы и закрывает по окончании. В итоге делается вывод, что в каких-то сценариях pgbouncer может помочь улучшить производительность. Фернандо, правда, так и не смог выжать из конфигурации с pgbouncer больше 1821 TPS супротив 4506 TPS без него, но ведь это тоже улучшение, просто отрицательное! :) Впрочем, выжать что-либо он и не пытался, а довольствовался полученными результатами, хоть и имеющими нулевую практическую ценность. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 16:51 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Максим, спасибо за развёрнутый ответ! 1)у postgresql 1 коннект - 1 процесс... Это значит что при 1000 коннектов имеем: 1000 регулярно активных процессов нагружают cpu scheduler, вызывают постоянное вымывание кеша процессора и лишние переключения контекста и миграции процессов между сокетами Всё то же самое вызовут и 100 процессов, выполняющие работу этих 1000. Scheduler-у измеримой разницы нет, сколько процессов в системе - сто или тысяча или десять тысяч, а все остальные проблемы зависят от количества выполняемой работы, а не количества процессов, которые эту работу делают. 1000 процессов базы в пределе занимают (и легко могут занимать) 1000*work_mem например 32GB памяти просто на себя при не сильно большом 32MB work_mem Бесспорно, но это очевидные накладные расходы ОС, их я понимаю. Также такая история будет свидетельством того, что все бэкенды в какой-то момент могут раздувать и полностью использовать свои пулы коннектов. 1000 процессов базы когда у вас будет много shared buffers (ну там 100 или 200GB) и не включены huge_pages.... Я не знаток Linux, но насколько могу понимать, при shared buffers в сотни гигабайт неиспользование HugePages - это целенаправленное вредительство. вы получите в пределе еще 100-200GB занятых в PageTables памяти ядра системы В Solaris для решения подобных проблем есть Intimate Shared Memory, а в Linux, насколько я понимаю, при использовании HugePages таких проблем тоже не будет. Внутренние структуры (ProcArray) у postgresql очень фигово масштабируются на тысячи коннектов и там начинается очень большой overhead и потери на сихронизацию в 2 и 4х сокетных серверах. А вот это интересно. Можете поподробнее раскрыть тему? И почему многосокетные системы страдают, а, многоядерные, но с одинм сокетом, получается, нет? И зачем Postgresql лезть во внутренние структуры процессов сильно глубоко, если очевидно, что процесс, не выполнявший с предыдущего его обхода никакой полезной работы, своё состояние или состояние разделяемых между процессами ресурсов не изменил? Тут хорошая аналогия с scheduler-ом ОС - если у треда стоит флаг TS_RUN, то есть потребность что-то делать и ставить его в очередь на выполнение, а если нет, то и делать ничего не надо и можно переходить к следующему треду (утрирую). Что же касается "Значит, суммарный для всех одновременно доступных бэкендов лимит на количество соединений в пуле не должен быть выше этого количества. " - фиг там не работает оно так... потому что сейчас одному backend надо 1 коннект а другому 40... через секунду наоборот... Мне кажется, у Вас что-то или с бэкендами или с балансировщиком перед этими бэкендами. Как исключить ситуацию, когда все бэкенды захотят 40 коннектов каждый? Если ограничивать это pgbouncer-ом или не важно чем ещё, Вы просто упрётесь в лимиты этого ограничителя и потеряете время отклика. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 17:36 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Scott Tiger, Ответ на это все выходит за рамки дискуссии на форуме. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 18:45 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Maxim Boguk Scott Tiger, Ответ на это все выходит за рамки дискуссии на форуме. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Максим, а не подскажете, где бы почитать про закрытие соединения и завершение процессов. В документации только про открытие соединения и создание процессов. Как я понял из документации, например при нажатии кнопки в приложении у нас выполняется 10 селектов, это будет выглядеть примерно так - устанавливается соединение, идем в основной процесс на сервере postgres далее делается 10 форков, появляется 10 дочерних процессов и выполняется 10 селектов. Но нигде не нашел информации по описанию дальнейшего механизма завершения процессов и закрытия соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 07:39 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
kliff Maxim Boguk Scott Tiger, Ответ на это все выходит за рамки дискуссии на форуме. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Максим, а не подскажете, где бы почитать про закрытие соединения и завершение процессов. В документации только про открытие соединения и создание процессов. Как я понял из документации, например при нажатии кнопки в приложении у нас выполняется 10 селектов, это будет выглядеть примерно так - устанавливается соединение, идем в основной процесс на сервере postgres далее делается 10 форков, появляется 10 дочерних процессов и выполняется 10 селектов. Но нигде не нашел информации по описанию дальнейшего механизма завершения процессов и закрытия соединения. Эм все не так... открытие соединения к базе - форк и порождение нового процесса (крайне дорогая штука на самом деле если это сотни и тысячи раз в секунду делать) + куча внутренней инициализиационой работы базы после этого уже в форкнутом процессе далее этот конкретный процесс живет себе и обрабатывает запросы от клиента у себя как клиент отсоединяется от базы - процесс заканчивается если клиент соединился и сутки ничего не делает - будет сутки висеть процесс который жрет память и раздувает внутренние общиие ресурсы базы . -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 09:23 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Maxim Boguk, большое спасибо, понял! Максим, могли бы еще подсказать, как правильно настроить pgBouncer при условии, что у меня 3тысячи пользователей и все ходят в БД через одного пользователя БД. pool_mode у меня установлен в transaction. Судя по описанию default_pool_size это сколько подключений в паре пользователь\БД, если у меня один пользователь, то этот параметр я должен установить равным 3000? max_client_conn я установил 5000 В самом postgresql max connections до установки pgbounser установлено было 3000. Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 13:35 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
kliff, default_pool_size - количество CPU на сервере с базой (без учета HT) умноженное на 2 или 4ре но лучше не ставить меньше 30-40. Установка больше чем 100-200 оправдана ТОЛЬКО в очень особых случаях и для кривых приложений которые с транзакциями некорректно работат. На слабых серверах 10-20 вполне может закрывать потребности. default_pool_size устанавливается от того сколько ваш сервер может обрабатывать одновременно работающих запросов а не от того сколько у вас клиентов. Задача pgbouncer превратить тысячи входящих соединений в десятки реальных с базой. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 13:42 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Maxim Boguk, Большое спасибо. Еще возник вопрос, вот есть отдельно веб сервер и отдельно БД сервер. Есть ли опыт, где эффективнее ставить баунсер на вебе, и чтоб уже баунсер ходил на сервер бд или баунсер ставить на сервере БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 07:54 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
kliff Maxim Boguk, Большое спасибо. Еще возник вопрос, вот есть отдельно веб сервер и отдельно БД сервер. Есть ли опыт, где эффективнее ставить баунсер на вебе, и чтоб уже баунсер ходил на сервер бд или баунсер ставить на сервере БД? на сервере с базой в 99% случаев и в отдельных редких - на выделенном сервере. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 10:32 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
D0KX, а по каким критериям был выбран pgbouncer, а не pgpool? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 12:14 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
ptr128 D0KX, а по каким критериям был выбран pgbouncer, а не pgpool? pgpool - достаточно странное тормозное поделие с кучей вещей которые в 99% не нужны. pgpool - собрание костылей чтобы приложение не переписывать нормально с учетом наличия реплик и прочего. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 12:17 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
Maxim Boguk, А без эмоций? Они, простите, мало кому интересны. Расскажите о Вашем отрицательном опыте использования pgpool чисто техническим языком, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 12:29 |
|
как работать с pgbouncer?
|
|||
---|---|---|---|
#18+
ptr128 Maxim Boguk, А без эмоций? Они, простите, мало кому интересны. Расскажите о Вашем отрицательном опыте использования pgpool чисто техническим языком, пожалуйста. чисто техническим - как connection pooler pgbouncer содержит в себе ровно тот минимум возможностей который нужен (я бы даже сказал что даже в нем многовато настроек для лечения больных на голову приложений) и поэтому при эксплуатации не вызывает желания попробовать "а вот еще вот эту фичу давайте включим" c выяснением что она вот тут работает тут не работает а тут вообще рыбу заворачивали. pgpool же превратился из пулера коннектов в мегасобрание костылей которые к задаче пулинга коннектов вообще отношения не имеют. Ну и главное "One pgpool child process can handle exactly one client connection at any time. " - это вообще веселая идея исключительно приводящая к тому что постоянные соединения между приложением и pgpool просто невозможно использовать (а это превращает работу с той же Java через него в веселье так как java/jdbc предполагают второй уровень пула внутри приложения с постоянно установленными коннектами к базе). А pgbouncer нормально и 20000 входящих держит при необходимости в одном процессе. В общем у pgpool странная архитектура требующая для ее использования серьезной переделки приложений и тяжелая по ресурсам. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 13:39 |
|
|
start [/forum/topic.php?fid=53&fpage=10&tid=1993964]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 394ms |
0 / 0 |