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

Apache django mysql очень медленно

Я использую Django, wsgi с apache, но сервер очень медленный, когда я пытаюсь вставить данные на сервер mysql. Вставка 200 строк в таблицу занимает 1 секунду. Странно то, что apache и mysql используют только 3% процессора и памяти. Я уверен, что что-то неправильно настроено, но я не могу его найти.

Вот мой конфигурационный файл apache, настройка wsgi и результат команды «top».

Я очень ценю, если кто-нибудь может мне немного помочь. Спасибо!

Мой файл конфигурации apache:

WSGIScriptAlias / "/home/jiechao/EZ_Green/apache/ems_django.wsgi"
ServerName www.ezgreenbuildings.com
WSGIDaemonProcess ezgreenbuildings.com processes=2 maximum-requests=1000 threads=25
WSGIProcessGroup ezgreenbuildings.com

wsgi файл:

os.environ['DJANGO_SETTINGS_MODULE'] = 'ems.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

sys.path.append("/home/jiechao/EZ_Green/django")
sys.path.append("/home/jiechao/EZ_Green/django/ems")

результат верхней команды:

top - 15:56:02 up 25 days, 19:30,  1 user,  load average: 0.74, 0.24, 0.11
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.8%us,  0.7%sy,  0.0%ni, 58.5%id, 40.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4124236k total,  3242020k used,   882216k free,   157960k buffers
Swap:  4192252k total,      440k used,  4191812k free,  2750284k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6487 www-data  20   0  101m  63m 7288 S    1  1.6   0:03.02 apache2
30558 mysql     20   0  313m  44m 7020 S    1  1.1   0:54.98 mysqld
  258 root      20   0     0    0    0 D    1  0.0   1:09.21 jbd2/sda1-8
10243 root      20   0     0    0    0 S    0  0.0   0:00.04 kworker/1:1
14410 jiechao   20   0  208m 8268 3296 S    0  0.2   4:39.92 python
    1 root      20   0  3504 1876 1276 S    0  0.0   0:01.58 init
    2 root      20   0     0    0    0 S    0  0.0   0:00.13 kthreadd
    3 root      20   0     0    0    0 S    0  0.0   0:45.39 ksoftirqd/0
    5 root      20   0     0    0    0 S    0  0.0   0:00.40 kworker/u:0
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0
    7 root      RT   0     0    0    0 S    0  0.0   0:03.85 watchdog/0

После редактирования.

Я добавил «WSGIProcessGroup» сейчас, так что теперь он должен вызывать режим демона. Я использую Prefork для MPM, но не понимаю, как посмотреть настройки MPM.

Что касается посещений сайта, я думаю, что 1000 посещений в секунду - это то, что я ожидал.

У вас есть несколько проблем.

Вам не хватает директивы WSGIProcessGroup, что означает, что WSGIDaemonProcess является избыточным и даже не используется. Вы там работаете во встроенном режиме, а не в режиме демона. Встроенный режим - не лучшая идея, если вы не знаете, как правильно настроить Apache. Читать:

Если бы вам удалось настроить его так, чтобы режим демона использовался должным образом, настройки ваших процессов / потоков были бы безумно высокими и, вероятно, просто занимали бы много памяти в вашей системе, что потенциально могло бы привести к началу обмена и замедлению вашей системы.

Из-за отсутствия WSGIProcessGroup вы, по крайней мере, еще не вызываете это.

Насколько серьезна проблема, которую вы создали для себя, работая во встроенном режиме, действительно зависит от того, какой Apache MPM вы используете и каковы настройки MPM.

Итак, прежде чем вы сможете продолжить отладку, вам необходимо выяснить, используете ли вы предварительную вилку Apache или рабочий MPM, а также какие настройки MPM вы используете. Получите эту информацию и отредактируйте свой вопрос, добавив дополнительную информацию.

Также дайте реалистичную оценку того, сколько запросов в секунду ваш сайт действительно обрабатывает. Таким образом можно оценить, насколько неправильны настройки процессов / потоков процессов MPM и демона.

Для дополнительной информации см .:

То, что там есть, поможет вам определить, какой MPM вы используете, и какой режим используется: встроенный или режим демона. Плюс, загружается ли также mod_python, что также может вызвать другой мир боли.


ОБНОВЛЕНИЕ 1

Настройки Apache MPM находятся в файлах конфигурации Apache. Прочтите документацию Apache о настройках MPM, чтобы знать, какие они есть. Особенно с prefork MPM, если вы не понимаете, что это такое и как правильно их настроить для настройки вашего сайта, у вас ничего не получится.

Что касается утверждения 1000 посещений в секунду, если это правда, то вы собираетесь значительно замедлить работу, используя максимальное количество запросов в 1000, поскольку процессы вашего веб-приложения будут перезапускаться каждые пару секунд, а задержки в этом будут все замедляется. Если можно избежать этого, никогда не следует использовать максимальное количество запросов в производственной системе.

Честно говоря, я сомневаюсь в утверждении, что вы обрабатываете 1000 посещений в секунду. Маловероятно, что приложение Django, использующее базу данных, сможет работать где-то рядом с этим на одном сервере. Это реальный трафик или это просто ваши мечты о том, с чем вы хотите справиться? Какой фактический мониторинг производительности вы используете для подтверждения того, что вы обрабатываете такое количество запросов в секунду?