то как правильно использовать пулы из pgbouncer? Если просто использовать poolclass=NullPool в create_engine, а потом создавать sessionmaker, то это работает, конечно, но почему-то как-то слишком медленно. Играет ли тут роль, если я использую это всё дело вместе с Dramatiq? Потому что Dramatiq'ом создаю дополнительные потоки и не совсем уверен, эффективно ли всё вообще утилизируется, да и работает в целом правильно. Потому что если не использовать pgbouncer, а обычный пул соединений из алхмии, то при нескольких десятков воркеров RAM у базы линейно растёт, что в скором времени приводит к ООМ
Юзать обычный пул алхимии и не париться.
Так бы с радостью, но из-за этого падает база. Возрастания на графике — запуск воркеров. Убывание — база лежит, воркеры ждут подключения к базе. И почему эта память постоянно растёт я не знаю, ибо количество подключений к базе не меняется
Сколько у тебя воркеров?
Поднимаются 1-40 машин. Одна машина — это 2 процесса с 8 потоками (причём потоки всё ещё тестируем, ищем оптимальное значение для скорости обработки)
1. Сколько воркеров 2. Какого размера пул в алихмии 3. Какого размера пул в пнбаунсере 4. Чей это график?
2. Пул в алхимии 20 3. Пул в pgbouncer 20 4. Использование RAM в базе Postgres 13 (8 vCPU, 50GB RAM)
Итого у тебя алхимия дожна есть около 40*2*8=640 коннектов до баунсера
Обсуждают сегодня