Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2012 11:17:03

grok
От:
Зарегистрирован: 2010-09-09
Сообщения: 74
Репутация: +  0  -
Профиль   Отправить e-mail  

Корректная организация пула соединений

Доброго времени суток!
Ситуация: мой сервер крутится на apache, mod_wsgi и PostgreSQL. Для каждого запроса создается новый коннект к базе данных. Возникла необходимость ограничить количество данных соединений. Для этого использую psycopg2.pool. Но так как apache для каждого запроса создает по процессу (ведь он многопоточный), то создавать пул в *.wsgi файле (application) не является правильным; ведь на каждый такой созданный apache-процесс, будет создаваться свой пул соединений с базой.

Как в данном случае организовать пул соединений?

Была идея запустить в фоне python-скрипт как сервис и отдавать/принимать коннект с базой, но как оказалось объект connection является unpickable объектом.

Спасибо.



Отредактировано grok (Авг. 7, 2012 11:17:30)

Офлайн

#2 Авг. 7, 2012 13:12:33

asava
От: Минск
Зарегистрирован: 2012-07-31
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Корректная организация пула соединений

есть хорошая статья по теме, в ней есть инструкции как настраивать и сравнениние эффективности, pgBouncer лучше
http://www.askthepony.com/blog/2011/07/django-and-postgresql-improving-the-performance-with-no-effort-and-no-code/

Офлайн

#3 Авг. 14, 2012 15:11:15

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Корректная организация пула соединений

grok
У постгреса форковая модель, а форки тяжелее нитей. Поэтому для него куча коннектов/дисконнектов смертеподобна, слишком велик оверхед. Посему +1 к asava, сам везде юзаю pgBouncer в том числе и на python.su. Тем более он делает коннекты постоянными, помимо ограничения количества.

Офлайн

#4 Авг. 14, 2012 22:12:16

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Корректная организация пула соединений

+1 за pgBouncer.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version