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

У вас при любой нагрузке лимит конекшинов на постгресе до

100? вы все регулируете пгбаунсером?

у меня примерно 2000 конекшинов от бэкэнда. как мне максимально правильно настроить пгбаунсер и постгрес?

23 ответов

34 просмотра

если мне не изменяет память > 100 нельзя в PSQL и в DB2 такое же ограничение

В идеале, max_connections бессмысленно делать больше числа доступных физических ядер процессоров сервера.

Artur Karapetov
если мне не изменяет память > 100 нельзя в PSQL и ...

Это неверно. Указать можно сколько угодно, и оно честно отработает. Какие при этом возникнут проблемы - это второй вопрос

Dima Igrishin
В идеале, max_connections бессмысленно делать боль...

Если 90% из них 90% времени простаивают, то вполне себе полезно.

Dima Igrishin
В идеале, max_connections бессмысленно делать боль...

Это неверно. Если оптимизировать общую пропускную способность (скорость), то параллелизм должэн забить все устройства до насыщения самого ограничивающего. К количеству процэссоров это часто имеет очень опосредованное отношэние. И это число чаще всего заметно большэ количества процэссоров.

Роман Жарков
Если 90% из них 90% времени простаивают, то вполне...

Я ж говорю, в идеале. Простой 9 бэкэндов из 10 в 90% говорит лишь об одном - плохой архитектуре решения.

Ilya Anfimov
Это неверно. Если оптимизировать общую пропускную ...

Ну так сделайте max_connections равным 100000 и забьются все ядра и будет суперсервер, наверное. 😁

Ilya Anfimov
Это неверно. Если оптимизировать общую пропускную ...

Каждый бэкэнд ложится на физическое ядро. Из этого, соответственно, мои выводы.

Dima Igrishin
Я ж говорю, в идеале. Простой 9 бэкэндов из 10 в 9...

У вас десять условных кассиров в условной 1С держат десять сессий и не успевают нагрузить пару четырёхгигагерцовых ядер. Где архитектурная ошибка?

Dima Igrishin
Каждый бэкэнд ложится на физическое ядро. Из этого...

Эти выводы довольно безосновательны и несоответствуют типичным результатам нагрузочного тэстирования.

Роман Жарков
У вас десять условных кассиров в условной 1С держа...

Я ж говорю, о том, к чему нужно стремиться в идеале. Для такого детского случая, как Вы сейчас привели, в постгресе по дефолту стоит max_connections равным 100, как раз потому, чтобы большинство кассиров было довольно. Но человек то спрашивал про кейс с max_connections 2000. Т.е. его кейс скорее о хороших нагрузках, для которых и придумали пулы, вроде баунсера, хотя, в идеале, такой пул должен быть в постгресе, и над его реализацией работает уже давно К. Книжник, если я не ошибаюсь.

Ilya Anfimov
Эти выводы довольно безосновательны и несоответств...

Хехе. Когда на сервере N ядер, то установка max_connections больше, чем N - это либо самообман, либо случаи, вроде упомянутых Романом - 10 кассиров кое-как работают с бд без загрузки последней.

Dima Igrishin
Каждый бэкэнд ложится на физическое ядро. Из этого...

В реальности бОльшая часть задач СУБД — io-bound. Потому, как минимум, базе надо забить очереди дисков. Которых во-первых много, во-вторых до них можэт быть приличный round-trip в десятки микросекунд (если это SAN какой-нибудь). При этом, когда 50 бэкэндов ждут своих данных от дисков в полёте — всё равно жэлательно, чтобы задачи для дисков вычислялись. Есди при равномерной нагрузке у нас 100% нагрузка дисков требует 20% загрузки CPU — то получается, что требуется ещё 1/5 от количества процэссоров. Примерно та жэ ситуацыя с загрузкой шыны памяти (только мониторить её сложнее, чем диски и процэссоры). В общем, в большынстве ситуацый надо заметно большэ воркеров, чем голов ЦПУ.

Ilya Anfimov
В реальности бОльшая часть задач СУБД — io-bound. ...

Во сколько раз больше? Каковы Ваши рекомендации?

Dima Igrishin
Во сколько раз больше? Каковы Ваши рекомендации?

Провести нагрузочное тэстирование и определить максимум tps.

Ilya Anfimov
Провести нагрузочное тэстирование и определить мак...

Соглашусь. Но в идеале max_connections равен числу ядер, без всякого тестирования. Если речь идёт о нагрузках, то лучше перестраховаться и не задирать max_connections выше этого.

Dima Igrishin
Во сколько раз больше? Каковы Ваши рекомендации?

Ну, то есть можно конечно представить некоторые рекомендацыи там 15 на каждый hdd, 5 на ssd, плюс домножыть round-trip на iops, плюс по числу голов.... Но я ужэ говорил — многое зависит от нагрузки, многое — от расположэния данных. К тому жэ то, что я описал — это бонусы параллелизма. Ещё более богатая тема — его недостатки. Вымывание кэшэй, бесплодное ожыдание блокировок, ... Потому оцэнивать это очень полезно, но хорошый результат даёт эксперимент.

Dima Igrishin
Соглашусь. Но в идеале max_connections равен числу...

Ну, если вы выбрали себе такой идеал — то кто я такой, чтобы с ним интэрферировать. Но идеала всё равно не бывает, так что уж его мусолить. Базы данных у нас те, которые даны в ощущениях, и жэлезо тожэ.

Ilya Anfimov
В реальности бОльшая часть задач СУБД — io-bound. ...

> В реальности бОльшая часть задач СУБД — io-bound. [citation needed] Т.е. откуда "статистика"? > Потому, как минимум, базе надо забить очереди дисков. Потому как вот это выглядит как "кто-то удачно сэкономил на железе", IMHO. ;) > В общем, в большынстве ситуацый надо заметно большэ воркеров, чем голов ЦПУ. В этих ситуациях уже нужно "спасать" перегруженную СУБД, а крутить max_connections и т.п.

Ilya Anfimov
Ну, если вы выбрали себе такой идеал — то кто я та...

Это потому идеал, потому что логичен и очень просто объясняется безо всяких экспериментов и танцев с бубнами. Буквально на пальцах.

Yaroslav Schekin
> В реальности бОльшая часть задач СУБД — io-bound...

Ниоткуда статистика особенно. Так, опыт решэния проблем с СУБД. Последний абзац нераспарзил.

Ilya Anfimov
Ниоткуда статистика особенно. Так, опыт решэния пр...

IMHO, большая часть таких "опытов" с успехом заменяется "just buy the damn RAM!". ;) > Последний абзац нераспарзил. Я про ситуации, "когда 50 бэкэндов ждут своих данных от дисков в полёте".

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
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
Карта сайта