Назад | Перейти на главную страницу

mod_wsgi, apache2 и средняя загрузка

У меня есть сервер, на котором запущено несколько приложений Cherrypy на apache2 под mod_wsgi. Мы наблюдаем постоянно колеблющуюся среднюю нагрузку на ящик, который не обслуживает много запросов. Насколько я могу судить, приставка не испытывает реальной нагрузки на ЦП, в ней много памяти, очень мало сетевого трафика и не происходит дискового ввода-вывода. Мы запускаем 13 процессов демона mod_wsgi с 5 потоками на процесс, обслуживающие 5 различных приложений. Это очень легкие серверные сервисные приложения, которые совсем не обрабатывают. Я проверил практически все, что я считаю причиной скачков нагрузки, и мне было интересно, имел ли кто-нибудь здесь опыт решения подобной проблемы. Любые комментарии приветствуются.

Вот график средней нагрузки в течение примерно 5 минут на промежуточном блоке, обслуживающем 10 запросов в минуту:

~ $ sar -q 5
Linux 2.6.32-305-ec2    01/27/2011  _i686_  (1 CPU)

04:18:37 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
04:18:42 AM         0       257      1.52      1.90      1.89
04:18:47 AM         0       257      1.40      1.87      1.88
04:18:52 AM         0       257      1.28      1.84      1.87
04:18:57 AM         0       257      1.18      1.81      1.86
04:19:02 AM         0       257      1.17      1.79      1.85
04:19:07 AM         0       257      1.15      1.78      1.85
04:19:12 AM         0       257      1.14      1.77      1.84
04:19:17 AM         0       257      1.05      1.74      1.83
04:19:22 AM         0       257      0.96      1.71      1.82
04:19:27 AM         0       257      0.89      1.68      1.81
04:19:32 AM         0       256      0.82      1.65      1.80
04:19:37 AM         0       256      0.75      1.62      1.79
04:19:42 AM         0       256      0.69      1.60      1.78
04:19:47 AM         0       256      0.95      1.64      1.79
04:19:52 AM         0       256      1.20      1.67      1.81
04:19:57 AM         0       256      1.42      1.71      1.82
04:20:02 AM         0       256      1.31      1.68      1.81
04:20:07 AM         0       256      2.00      1.82      1.85
04:20:12 AM         0       256      2.64      1.96      1.89
04:20:17 AM         0       256      3.23      2.09      1.94
04:20:22 AM         0       256      2.97      2.06      1.93
04:20:27 AM         0       256      2.74      2.02      1.92
04:20:32 AM         0       256      2.52      1.99      1.91
04:20:37 AM         0       256      2.31      1.95      1.90
04:20:42 AM         0       256      2.13      1.92      1.89
04:20:47 AM         0       256      1.96      1.89      1.88
04:20:52 AM         0       256      1.80      1.86      1.87
04:20:57 AM         0       256      1.66      1.83      1.85
04:21:02 AM         0       256      1.52      1.80      1.84
04:21:07 AM         0       256      1.40      1.77      1.83
04:21:12 AM         0       256      1.29      1.74      1.82
04:21:17 AM         0       256      1.19      1.71      1.81
04:21:22 AM         0       256      1.09      1.68      1.80
04:21:27 AM         0       256      1.00      1.65      1.79
04:21:32 AM         0       256      0.92      1.62      1.78
04:21:37 AM         0       256      0.85      1.59      1.77
04:21:42 AM         0       256      0.78      1.57      1.77
04:21:47 AM         0       256      0.72      1.54      1.76
04:21:52 AM         0       256      0.98      1.58      1.77
04:21:57 AM         0       256      1.22      1.62      1.78
04:22:02 AM         0       256      1.44      1.66      1.79
04:22:07 AM         0       256      2.13      1.80      1.83
04:22:12 AM         0       256      2.76      1.93      1.88
04:22:17 AM         0       256      3.34      2.07      1.92
04:22:22 AM         0       256      3.87      2.20      1.96
04:22:27 AM         0       256      3.56      2.16      1.95
04:22:32 AM         0       256      3.28      2.13      1.94
04:22:37 AM         0       256      3.01      2.09      1.93
04:22:42 AM         0       256      2.77      2.06      1.92
04:22:47 AM         0       256      2.55      2.02      1.91
04:22:52 AM         0       256      2.34      1.99      1.90
04:22:57 AM         0       256      2.16      1.95      1.89
04:23:02 AM         0       256      1.98      1.92      1.88
04:23:07 AM         0       256      1.82      1.89      1.87
04:23:12 AM         0       256      1.68      1.86      1.86

и верхний профиль:

top - 04:38:57 up  1:17,  1 user,  load average: 2.55, 3.03, 2.46
Tasks:  78 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1741016k total,   946844k used,   794172k free,    63712k buffers
Swap:   917496k total,        0k used,   917496k free,   646064k cached

на запрос, apache conf одной службы (все они примерно так выглядят).

Listen 12800
<VirtualHost *:12800>
    WSGIScriptAlias / /var/www/services/tracking/tracking.wsgi
    WSGIDaemonProcess tracking user=www-data group=www-data processes=3 threads=5 maximum-requests=1000 umask=0007
    WSGIProcessGroup tracking
    WSGIApplicationGroup tracking
    WSGIPassAuthorization On

    ErrorLog /var/log/apache2/tracking.error.log
    CustomLog /var/log/apache2/tracking.access.log combined
    LogLevel warn
</VirtualHost> 

На самом деле мы не сделали какой-либо конкретной настройки параметров для mod_wsgi, кроме того, что вы видите в этой конф.

Вы абсолютно уверены, что они по ошибке работают в режиме демона, а не во встроенном режиме? Встроенный режим может привести к нежелательному поведению толстых веб-приложений Python в зависимости от используемого MPM и настроек MPM. Видеть:

http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html

Вы также можете вызвать у себя проблемы, если используете режим демона и установили для maximum-requests слишком низкое значение. Тайм-аут бездействия также может вызвать проблемы, если у вас нечастый трафик и используется много процессов.

Предлагаю вам опубликовать части конфигурации Apache, связанные с mod_wsgi.