powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ограничения pgbouncer
4 сообщений из 4, страница 1 из 1
Ограничения pgbouncer
    #39116853
Ivan Evtuhovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с тем, что pgbouncer не может отдать больше 200Мбит/секунду и 30krps, при этом CPU Usage ~25%. При этом, если я соединяюсь с pg напрямую, то отдаю до 600Мбит.

Все запросы простенькие вида
Код: sql
1.
select * from table where id = X


3 pgbouncer-а отдают на треть меньше, чем pg напрямую. А городить схему, где их будет 4 - не вижу смысла.


Напрямую соединяться не хочется, потому что используется ~ 230 экземпляров сервера приложений, каждый из которых держит по одному соединению.

Может я куда-то не туда смотрю? Куда копать?


Postgresql 9.3.10
Pgbouncer 1.6.1
Linux 3.13.0-68-generic
Mem: 12Gb, 12 CPU

На диск нагрузка практически нулевая.

net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216



--
С наилучшими пожеланиями,
Иван Евтухович
...
Рейтинг: 0 / 0
Ограничения pgbouncer
    #39116914
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan EvtuhovichСтолкнулся с тем, что pgbouncer не может отдать больше 200Мбит/секунду и 30krps, при этом CPU Usage ~25%. При этом, если я соединяюсь с pg напрямую, то отдаю до 600Мбит.

Все запросы простенькие вида
Код: sql
1.
select * from table where id = X


3 pgbouncer-а отдают на треть меньше, чем pg напрямую. А городить схему, где их будет 4 - не вижу смысла.


Напрямую соединяться не хочется, потому что используется ~ 230 экземпляров сервера приложений, каждый из которых держит по одному соединению.

Может я куда-то не туда смотрю? Куда копать?


Postgresql 9.3.10
Pgbouncer 1.6.1
Linux 3.13.0-68-generic
Mem: 12Gb, 12 CPU

На диск нагрузка практически нулевая.

net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216



--
С наилучшими пожеланиями,
Иван Евтухович

Под такой трафик надо уже вдумчиво его настраивать. На 10Gbit сетке у меня он до 5Gbit я настраивал на 1 процессе pgbouncer и все равно не было 100%CPU на pgbouncer.
Сетевые настройки похожи на ваши (чуток побольше просто):
# increase Linux autotuning TCP buffer limit to 64MB
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

У pgbouncer:
;; buffer for streaming packets
pkt_buf = 524288
;; In-kernel buffer size (linux default: 4096)
tcp_socket_buffer = 8388608

Основная задача настройки сделать так чтобы 99.99% ответов на запрос от базы влезало в pkt_buf у pgbouncer, а tcp_socket_buffer был раз в 5-10 больше чем pkt_buf (а дальше пусть ядро разбирается как это все отправлять клиенту).

PS: еще если сервер нагруженный то помогает renice -n -20 для Pgbouncer (чтобы у него процессор никто не отьедал (а то все начинают оптом тормозить в итоге).

PPS: pgbouncer после смены подобных сетевых настроек стоит жестко перезапускать (через stop/start).

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Ограничения pgbouncer
    #39116928
Ivan Evtuhovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим, спасибо за ответ.

С вашими настройками производительность осталась та же. Я предполагаю, что это какое-то ограничение на количество пакетов в секунду на виртуальном сетевом интерфейсе (используется облако селектел).

Сделаю гибридную схему, где часть будет напрямую ходить, а часть через pgbouncer.

Код: plaintext
1.
2.
3.
4.
5.
# вывод nicstat
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
06:47:08     eth0  2844.2 19844.4 26274.8 26454.8   110.8   768.1  0.00   0.00
06:47:08       lo   43.79   43.79   151.5   151.5   296.0   296.0  0.00   0.00

...
Рейтинг: 0 / 0
Ограничения pgbouncer
    #39116933
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan EvtuhovichМаксим, спасибо за ответ.

С вашими настройками производительность осталась та же. Я предполагаю, что это какое-то ограничение на количество пакетов в секунду на виртуальном сетевом интерфейсе (используется облако селектел).

Сделаю гибридную схему, где часть будет напрямую ходить, а часть через pgbouncer.

Код: plaintext
1.
2.
3.
4.
5.
# вывод nicstat
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
06:47:08     eth0  2844.2 19844.4 26274.8 26454.8   110.8   768.1  0.00   0.00
06:47:08       lo   43.79   43.79   151.5   151.5   296.0   296.0  0.00   0.00



Про облако ничего не скажу у меня всегда под базу только bare hardware (и уж тем более когда речь идет о гигабитном траффике).

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ограничения pgbouncer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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