Форум сайта python.su
Доброго времени суток!
Ситуация: мой сервер крутится на apache, mod_wsgi и PostgreSQL. Для каждого запроса создается новый коннект к базе данных. Возникла необходимость ограничить количество данных соединений. Для этого использую psycopg2.pool. Но так как apache для каждого запроса создает по процессу (ведь он многопоточный), то создавать пул в *.wsgi файле (application) не является правильным; ведь на каждый такой созданный apache-процесс, будет создаваться свой пул соединений с базой.
Как в данном случае организовать пул соединений?
Была идея запустить в фоне python-скрипт как сервис и отдавать/принимать коннект с базой, но как оказалось объект connection является unpickable объектом.
Спасибо.
Отредактировано grok (Авг. 7, 2012 11:17:30)
Офлайн
есть хорошая статья по теме, в ней есть инструкции как настраивать и сравнениние эффективности, pgBouncer лучше
http://www.askthepony.com/blog/2011/07/django-and-postgresql-improving-the-performance-with-no-effort-and-no-code/
Офлайн
grok
У постгреса форковая модель, а форки тяжелее нитей. Поэтому для него куча коннектов/дисконнектов смертеподобна, слишком велик оверхед. Посему +1 к asava, сам везде юзаю pgBouncer в том числе и на python.su. Тем более он делает коннекты постоянными, помимо ограничения количества.
Офлайн
+1 за pgBouncer.
Офлайн