Это SQLAlchemy CKAN, у которого заканчиваются соединения с базой данных. Вы увидите это, когда apache увидит несколько одновременных запросов под небольшой нагрузкой. Вы можете воспроизвести его, используя что-то вроде «ab», чтобы обеспечить одновременную загрузку.
Пул соединений SQLAlchemy совместно используется потоками одного и того же процесса CKAN, но каждый процесс CKAN имеет свой собственный пул.
Вы можете увеличить количество подключений в пуле, но помните, что postgres по умолчанию имеет ограничение в 100 подключений. Таким образом, с несколькими процессами вы достаточно быстро достигнете предела. Или вы можете ограничить количество процессов CKAN. Я полагаю, Ян несколько дней назад заметил одну зависимость CKAN, которая не является потокобезопасной, поэтому пока лучше придерживаться только процессов.
Если вы используете Apache, вы можете запустить mod_wsgi в режиме демона и указать ограничения для процессов/потоков. Если вы используете nginx/uwsgi, то это, естественно, ограничивает количество процессов, что лучше.
Лучшим решением было бы использовать отдельное приложение для хранения пула соединений. Преимущество этого заключается в работе с потоками CKAN. Можно использовать PGPool, но мы выбрали pgbouncer, который, как мне кажется, работает быстрее, и мы им очень довольны.
person
D Read
schedule
09.03.2017