Size: a a a

pgsql – PostgreSQL

2021 February 24

S

Slava in pgsql – PostgreSQL
Yaroslav Schekin
Да, лучше postgis. И тут где-то был даже чат по нему, кстати.
спасибо, можете дать ссылку, пожалуйста ?)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Slava
спасибо, можете дать ссылку, пожалуйста ?)
Фух, едва нашёл (в истории чата): https://t.me/postgis
(В сторону, мечтательно): Когда наши модераторы уже внесут в описание этого чата хоть что-то действительно полезное? ;)
источник

S

Slava in pgsql – PostgreSQL
👍👍👍
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
Немного не по теме, наверное, но у меня вопрос. Если вы на каждой машине запускаете ровно один воркер (1 питон-процесс), то зачем вам 2 vCPU на них, учитывая, что по сути задействуется лишь одно ядро? 1 питон процесс два ядра загрузить не может. Или я что-то не так понял
Меньше машину сделать нельзя, только с 2 vCPU
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
Меньше машину сделать нельзя, только с 2 vCPU
Ок. Так почему вы считаете, что увеличение количества потоков в питон приложении должно повысить производительность?
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
Ок. Так почему вы считаете, что увеличение количества потоков в питон приложении должно повысить производительность?
Один воркер при использовании пула соединений из sqlaclhemy (pool_size=50) и количеством потоков 50 обрабатывал на локальной машине 50 сообщений в секунду. После деплоя воркера с такими же параметрами в клауд, скорость обработки повысилась до ~130 сообщений в секунду.
А вот сейчас, при использовании pgbouncer (pool_size=2000, max_client_conn=2000, pool_mode=session) на локальной машине обрабатывается 25 сообщений в секунду, а при деплое воркера в клауд обрабатывается как случай (3) на графике выше
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
Один воркер при использовании пула соединений из sqlaclhemy (pool_size=50) и количеством потоков 50 обрабатывал на локальной машине 50 сообщений в секунду. После деплоя воркера с такими же параметрами в клауд, скорость обработки повысилась до ~130 сообщений в секунду.
А вот сейчас, при использовании pgbouncer (pool_size=2000, max_client_conn=2000, pool_mode=session) на локальной машине обрабатывается 25 сообщений в секунду, а при деплое воркера в клауд обрабатывается как случай (3) на графике выше
Я думаю, дело вообще не в боунсере совершенно. Скажите, а что там происходит вообще в этих воркерах? Может там асинхроннные операции, и потоки там нафиг не упали и подойдёт asyncio?
источник

LM

Lina M in pgsql – PostgreSQL
На данный момент разбираюсь только с одним воркером.
Который принимает на вход сообщение, проверяет, есть ли такое сообщение в базе, если нет, то записывает в базу, если есть, то ищет в сообщении ключевые слова, и отправляет в следующую очередь связку message_id и keyword
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
На данный момент разбираюсь только с одним воркером.
Который принимает на вход сообщение, проверяет, есть ли такое сообщение в базе, если нет, то записывает в базу, если есть, то ищет в сообщении ключевые слова, и отправляет в следующую очередь связку message_id и keyword
Это ж всё асинхронные операции. Зачем вам потоки?
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
Это ж всё асинхронные операции. Зачем вам потоки?
Изначально выбирали для процессинга задач Dramatiq (https://dramatiq.io/)
источник

D

Dmitriy in pgsql – PostgreSQL
В общем, я бы тогда вообще не заморачивался с потоками, а масштабировал бы процессами. 1 воркер = 1 процесс = 1 поток. Либо asyncio задействовал, но питоновские потоки я бы юзать точно не стал
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
В общем, я бы тогда вообще не заморачивался с потоками, а масштабировал бы процессами. 1 воркер = 1 процесс = 1 поток. Либо asyncio задействовал, но питоновские потоки я бы юзать точно не стал
Спасибо, подумаем над этим.
Но если возвращаться к исходному вопросу: с пулами из sqalchemy работало быстрее, чем с pgbouncer — можно тут что-то сделать с pgbouncer?
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Lina M
Изначально выбирали для процессинга задач Dramatiq (https://dramatiq.io/)
У вас долгие фоновые задачи, а каждая задача держит одно соединение?
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
Спасибо, подумаем над этим.
Но если возвращаться к исходному вопросу: с пулами из sqalchemy работало быстрее, чем с pgbouncer — можно тут что-то сделать с pgbouncer?
Вот тут не подскажу. Дождитесь ответа от DBA, которые боунсер советовали. Возможно, с pool_mode надо шаманить
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Не пробовали transaction pool_mode?
источник

LM

Lina M in pgsql – PostgreSQL
Viktor Grigorev
Не пробовали transaction pool_mode?
Ещё нет, но вот собирался менять
источник

LM

Lina M in pgsql – PostgreSQL
Viktor Grigorev
У вас долгие фоновые задачи, а каждая задача держит одно соединение?
В принципе да, так и было, пока один воркер не был переписан под использование подключения только тогда, когда это надо было
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
В таком случае смысла в баунсере в режиме сессий мало
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Есть мониторинги, по которым можно посмотреть сколько активных соединений с базой в среднем?
источник

LM

Lina M in pgsql – PostgreSQL
Viktor Grigorev
Есть мониторинги, по которым можно посмотреть сколько активных соединений с базой в среднем?
Да, можно
источник