Size: a a a

Golang Developers — русскоговорящее сообщество

2021 April 09

A

Alexander in Golang Developers — русскоговорящее сообщество
За pgxpool не скажу, но, в целом, pgbouncer должен работать с любыми либами, если они не открыто конфликтуют с режимом работы баунсера.
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Сейчас. Может будет полезно кому.
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
10 connections

┌─────────┬──────┬──────┬───────┬──────┬─────────┬─────────┬───────┐
│ Stat    │ 2.5% │ 50%  │ 97.5% │ 99%  │ Avg     │ Stdev   │ Max   │
├─────────┼──────┼──────┼───────┼──────┼─────────┼─────────┼───────┤
│ Latency │ 1 ms │ 2 ms │ 3 ms  │ 4 ms │ 1.76 ms │ 0.79 ms │ 34 ms │
└─────────┴──────┴──────┴───────┴──────┴─────────┴─────────┴───────┘
┌───────────┬────────┬────────┬────────┬─────────┬─────────┬─────────┬────────┐
│ Stat      │ 1%     │ 2.5%   │ 50%    │ 97.5%   │ Avg     │ Stdev   │ Min    │
├───────────┼────────┼────────┼────────┼─────────┼─────────┼─────────┼────────┤
│ Req/Sec   │ 3575   │ 3673   │ 4435   │ 4611    │ 4377.06 │ 241.38  │ 3383   │
├───────────┼────────┼────────┼────────┼─────────┼─────────┼─────────┼────────┤
│ Bytes/Sec │ 805 kB │ 827 kB │ 998 kB │ 1.04 MB │ 985 kB  │ 54.3 kB │ 761 kB │
└───────────┴────────┴────────┴────────┴─────────┴─────────┴─────────┴────────┘

Req/Bytes counts sampled once per second.

525k requests in 120.02s, 118 MB read
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
Это в баунсере
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
10 connections

┌─────────┬──────┬──────┬───────┬───────┬─────────┬─────────┬───────┐
│ Stat    │ 2.5% │ 50%  │ 97.5% │ 99%   │ Avg     │ Stdev   │ Max   │
├─────────┼──────┼──────┼───────┼───────┼─────────┼─────────┼───────┤
│ Latency │ 0 ms │ 1 ms │ 15 ms │ 18 ms │ 3.58 ms │ 4.58 ms │ 61 ms │
└─────────┴──────┴──────┴───────┴───────┴─────────┴─────────┴───────┘
┌───────────┬────────┬────────┬────────┬────────┬─────────┬─────────┬────────┐
│ Stat      │ 1%     │ 2.5%   │ 50%    │ 97.5%  │ Avg     │ Stdev   │ Min    │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Req/Sec   │ 1985   │ 2028   │ 2465   │ 2619   │ 2440.64 │ 135.31  │ 1954   │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Bytes/Sec │ 447 kB │ 456 kB │ 554 kB │ 589 kB │ 549 kB  │ 30.4 kB │ 440 kB │
└───────────┴────────┴────────┴────────┴────────┴─────────┴─────────┴────────┘

Req/Bytes counts sampled once per second.

293k requests in 120.04s, 65.9 MB read

Это напрямую
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
Тестили сколько запросов выполнится успешно за 2 минуты при 10 соединениях. В баунсере и напрямую.
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
100 connections

┌─────────┬───────┬───────┬───────┬───────┬──────────┬─────────┬───────┐
│ Stat    │ 2.5%  │ 50%   │ 97.5% │ 99%   │ Avg      │ Stdev   │ Max   │
├─────────┼───────┼───────┼───────┼───────┼──────────┼─────────┼───────┤
│ Latency │ 18 ms │ 26 ms │ 35 ms │ 39 ms │ 25.74 ms │ 5.05 ms │ 88 ms │
└─────────┴───────┴───────┴───────┴───────┴──────────┴─────────┴───────┘
┌───────────┬────────┬────────┬────────┬────────┬─────────┬────────┬────────┐
│ Stat      │ 1%     │ 2.5%   │ 50%    │ 97.5%  │ Avg     │ Stdev  │ Min    │
├───────────┼────────┼────────┼────────┼────────┼─────────┼────────┼────────┤
│ Req/Sec   │ 3541   │ 3593   │ 3831   │ 3961   │ 3811.45 │ 102.01 │ 3276   │
├───────────┼────────┼────────┼────────┼────────┼─────────┼────────┼────────┤
│ Bytes/Sec │ 797 kB │ 808 kB │ 862 kB │ 891 kB │ 857 kB  │ 23 kB  │ 737 kB │
└───────────┴────────┴────────┴────────┴────────┴─────────┴────────┴────────┘

Req/Bytes counts sampled once per second.

457k requests in 120.07s, 103 MB read


Через баунсер
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
100 connections

┌─────────┬──────┬───────┬────────┬────────┬──────────┬──────────┬────────┐
│ Stat    │ 2.5% │ 50%   │ 97.5%  │ 99%    │ Avg      │ Stdev    │ Max    │
├─────────┼──────┼───────┼────────┼────────┼──────────┼──────────┼────────┤
│ Latency │ 0 ms │ 18 ms │ 179 ms │ 197 ms │ 64.16 ms │ 66.07 ms │ 298 ms │
└─────────┴──────┴───────┴────────┴────────┴──────────┴──────────┴────────┘
┌───────────┬────────┬────────┬────────┬────────┬─────────┬─────────┬────────┐
│ Stat      │ 1%     │ 2.5%   │ 50%    │ 97.5%  │ Avg     │ Stdev   │ Min    │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Req/Sec   │ 1279   │ 1296   │ 1551   │ 1759   │ 1548.65 │ 104.85  │ 1252   │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Bytes/Sec │ 288 kB │ 292 kB │ 349 kB │ 396 kB │ 348 kB  │ 23.6 kB │ 282 kB │
└───────────┴────────┴────────┴────────┴────────┴─────────┴─────────┴────────┘

Req/Bytes counts sampled once per second.

186k requests in 120.36s, 41.8 MB read


На прямую
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Переслано от Александр Орешкин...
100 соединений и те же условия
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
Имеют-имеют. Даже если у тебя на отдельном инстансе ограничено количество коннектов в пуле, то у тебя количество инстансов может меняться. Да и экономить ресурсы СУБД в любом случае имеет смысл.
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Видимо pgxpool не хочет дружить. Скорее всего нужно простой pgx использовать.
источник

AS

Alexander Shavelev in Golang Developers — русскоговорящее сообщество
актуально иметь баунсер, если вы в кубере и у вас большие лимиты на кол-во подов в  hpa
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
А какой, вообще, режим работы у баунсера ты настроил?
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Выяснилось что через баунсер мы можем обрабатывать в 2, а где-то и в 3 раза больше запросов. Но это при 100 одновременных соединениях к серверу.
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
transaction
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
100 коннектов к постгресу напрямую — это уже выглядит как косяк в архитектуре.
источник

АО

Александр Орешкин... in Golang Developers — русскоговорящее сообщество
Но у нас задача в 10к соединений. Как тут быть?
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
откуда у вас 10к соединений?
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
это ведь не к базе соединения?
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
Норм. Возможно, проблема в том, что либа пытается юзать prepared statements, которые с transaction pooling не дружат.
источник