Я использую 3 отдельных виртуальных хоста для своего веб-сайта (Django w / wsgi для основного сайта, еще один Django w / wsgi для мобильной версии сайта и третий для Wordpress, выступающего в качестве блога сайта). Через несколько недель объем памяти подкачки увеличивается до точки, при которой время загрузки и пинга становится очень медленным. Когда я смотрю на top
, Я вижу, что есть несколько процессов Apache, каждый из которых занимает значительный объем памяти и выполняется не менее часа.
Это на сервере Ubuntu 10.04, работающем в облаке Rackspace (средний экземпляр).
Я запускаю два сайта django с wsgi в режиме демона (потоки = 1, процессы = 2).
Мои основные настройки apache2.conf выглядят следующим образом (с удалением нескольких "неактуальных" вещей, чтобы минимизировать размер этого сообщения - если вы ожидаете другого параметра, дайте мне знать, и я могу проверить, есть ли он там) :
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Одна вещь, которую я видел, предлагает перейти с Apache на «менее раздутый» веб-сервер. Я открыт для этой идеи, но предполагаю, что мне лучше всего переместить Wordpress с сервера, чтобы мне не понадобился PHP (или эти другие веб-серверы предлагают вместе решения на php и python?)
Дайте мне знать, если вам нужна дополнительная информация. Спасибо!
Используйте параметр display-name, как описано в документации mod_wsgi, чтобы пометить процессы демона mod_wsgi. Таким образом, с помощью «ps» вы сможете увидеть, действительно ли большие процессы являются процессами демона mod_wsgi.
http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
Если они достаточно толстые, то Apache или mod_wsgi тут ни при чем. Это произойдет потому, что ваши приложения сами по себе толстые. Это может быть из-за чрезмерного кэширования данных в памяти или утечки ресурсов.
Если помеченные процессы режима демона mod_wsgi не являются жирными, возможно, вы не делегировали приложениям Python для работы в процессах демона должным образом. Это или ваше приложение PHP является проблемой.
http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Embedded_Or_Daemon_Mode
Короче говоря, когда ваше приложение толстое, не имеет значения, какой механизм хостинга вы используете, они все равно будут толстыми, и Apache и mod_wsgi не имеют к нему никакого отношения, если вы не заполнили конфигурацию Apache.