Высокая загрузка processора на websiteе Django / Apache / mod_wsgi

Нагрузочное testing конфигурации django 1.21 / Apache / mod_wsgi на маленьком экземпляре AWS (Ubuntu 10.04) с сканером Apache показывает чрезвычайно высокую загрузку processора (с использованием времени безотказной работы и vmstat) при низких одновременных requestах:

ab -c 5 -n 1000 "my_url" 

… вызывает это time безотказной работы:

 18:04:54 up 9 days, 16:54, 3 users, load average: 5.33, 2.45, 1.91 

Процессор находится на уровне 100% даже с параллельным значением Apache benchmark 2. Я запускаю сканер Apache из другого экземпляра AWS в том же регионе / зоне. Идеи о том, в чем проблема, или как я должен продолжать отлаживать это?

Детали:

  • Из отчаяния я установил проект / приложение vanilla django с простым представлением «Hello World» (без вызовов БД и т. Д.). Те же результаты. Поэтому я сомневаюсь, что это мой код приложения.
  • Использование памяти отлично выглядит во time теста нагрузки.

Вот результат vmstat перед / во time / после загрузки:

 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- rb swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 1034484 94848 321320 0 0 0 0 13 29 0 0 100 0 6 0 0 1032916 94848 321328 0 0 0 0 262 720 4 32 12 0 6 0 0 1031684 94848 321336 0 0 0 0 312 796 7 33 0 0 8 0 0 1030892 94856 321344 0 0 0 12 302 763 4 36 0 0 ... 6 0 0 1030268 94864 321376 0 0 0 0 302 843 3 39 0 0 0 0 0 1032452 94868 321380 0 0 0 12 183 516 3 22 34 0 1 0 0 1033988 94868 321388 0 0 0 0 24 38 1 2 92 0 0 0 0 1033996 94868 321388 0 0 0 0 17 28 0 0 100 0 
  • Я запускаю предварительную версию apache2, так как я также запускаю WordPress, который опирается на PHP. (PHP не очень хорошо работает с рабочей версией Apache)

Вот мой file виртуальных хостов:

 WSGIPythonHome /home/xxx/webapps/ve/api <VirtualHost *:80> ServerAdmin [email protected] ServerName app.xxx.mobi WSGIDaemonProcess snaplive user=www-data group=www-data processes=10 threads=1 maximum-requests=10000 WSGIProcessGroup snaplive WSGIScriptAlias / /home/xxx/webapps/api/settings/apache/prod.wsgi DocumentRoot /home/xxx/webapps/api/static ErrorLog /var/log/apache2/django-live/error.log CustomLog /var/log/apache2/django-live/access.log combined </VirtualHost> 

Вот мой file httpd.conf:

 Alias /media /home/xxx/Django-1.2.1/django/contrib/admin/media LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so StartServers 2 MinSpareServers 2 MaxSpareServers 5 MaxClients 50 MaxRequestsPerChild 3000 ServerLimit 8 Keepalive off HostnameLookups Off 

Вот мой file wsgi:

 import os import sys sys.stdout = sys.stderr from django.core.handlers.wsgi import WSGIHandler os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' application = WSGIHandler() sys.path.append("/home/xxx/webapps/api") 

Ударив URL-адрес django из browserа во time теста нагрузки, я качественно подтвердил, что высокая загрузка processора влияет на performance.

Я читал, что это может быть не важно, но я вижу это в журналах ошибок:

 [Sun Sep 19 18:04:58 2010] [error] Exception KeyError: KeyError(-1218693376,) in <module 'threading' from '/usr/lib/python2.6/threading.pyc'> ignored 

Вот мои результаты в Apache, в случае полезности:

 Server Software: Apache/2.2.14 Server Hostname: app.xxx.mobi Server Port: 80 Document Path: /plist_catalog/test_data Document Length: 0 bytes Concurrency Level: 5 Time taken for tests: 27.720 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 269000 bytes HTML transferred: 0 bytes Requests per second: 36.08 [#/sec] (mean) Time per request: 138.598 [ms] (mean) Time per request: 27.720 [ms] (mean, across all concurrent requests) Transfer rate: 9.48 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 2 8.5 1 88 Processing: 9 136 176.9 81 1182 Waiting: 9 135 176.6 81 1182 Total: 10 138 176.7 83 1183 Percentage of the requests served within a certain time (ms) 50% 83 66% 98 75% 128 80% 140 90% 423 95% 576 98% 727 99% 819 100% 1183 (longest request) 

Проблема заkeyалась в том, что я установил пакет apache2-mpm-itk вместо apache2-mpm-prefork. apache2-mpm-itk происходит от apache2-mpm-prefork, но по какой-то причине не работает хорошо, когда используется с mod_wsgi.

  • Обслуживание произвольных поддоменов с помощью apache2, mod_wsgi и django
  • Apache2 возвращает 404 для requestов proxy до достижения WSGI
  • У нас есть nginx-proxy-server для apache w / mod wsgi и очень высокая загрузка serverа, как отслеживать причину?
  • Apache и mod_wsgi, рабочий процесс, застрявший в состоянии W, запрос никогда не умирает. Как диагностировать?
  • ImportError: Нет модуля с именем site. На CentOS 7 + python3.5
  • Не работает статические fileы - nginx
  • mod_wsgi + Django с другой версией Python
  • Ошибка importа модhive python в mod_wsgi
  • Apache w. mod_proxy или Static Media Server впереди?
  • Настройки Apache + mod_wsgi httpd.conf для django влияют на mysql?
  • Python: ImportError: less модуля с именем os
  • Давайте будем гением компьютера.