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

Как я могу настроить Apache для использования большего количества процессора?

Потоки Apache накапливаются на одном из моих веб-серверов (300-500 одновременных запросов, обработка некоторых занимает от 3 до 8 секунд!), Но загрузка ЦП очень низкая (~ 10%). В результате время загрузки страницы сильно замедляется. У меня достаточно простоя процессора. Как я могу использовать его больше, чтобы быстрее обрабатывать эти потоки?

Вот вершина топа ...

Tasks: 469 total,   1 running, 468 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.1% us,  1.7% sy,  0.0% ni, 90.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   9181012k total,  7998772k used,  1182240k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                                 
11351 apache    15   0  364m  30m  17m S 11.9  0.3   0:00.73 httpd                                                                                                                                                                                                                                                    
 7527 apache    15   0  365m  36m  23m S  8.6  0.4   0:01.76 httpd                                                                                                                                                                                                                                                    
 7607 apache    16   0  364m  35m  22m S  2.3  0.4   0:01.47 httpd                                                                                                                                                                                                                                                    
11498 apache    17   0  359m  19m  11m S  2.3  0.2   0:00.07 httpd                                                                                                                                                                                                                                                    
11497 apache    16   0  362m  23m  13m S  1.7  0.3   0:00.05 httpd                                                                                                                                                                                                                                                    
 1840 apache    15   0  366m  44m  29m S  1.3  0.5   0:03.74 httpd                                                                                                                                                                                                                                                    
 5358 apache    15   0  364m  36m  24m S  1.3  0.4   0:02.58 httpd                                                                                                                                                                                                                                                    
 8090 apache    15   0  365m  31m  17m S  1.3  0.3   0:01.10 httpd                                                                                                                                                                                                                                                    
11346 apache    15   0  361m  28m  18m S  1.3  0.3   0:00.12 httpd                                                                                                                                                                                                                                                    
 4051 apache    16   0  365m  40m  27m S  1.0  0.5   0:01.72 httpd                                                                                                                                                                                                                                                    
32575 apache    16   0  365m  42m  28m S  0.7  0.5   0:03.62 httpd                                                                                                                                                                                                                                                    
 5145 apache    16   0  365m  37m  24m S  0.7  0.4   0:02.23 httpd                                                                                                                                                                                                                                                    
 8173 apache    16   0  363m  35m  23m S  0.7  0.4   0:00.29 httpd                                                                                                                                                                                                                                                    
 5466 apache    15   0  365m  31m  18m S  0.3  0.4   0:01.18 httpd                                                                                                                                                                                                                                                    
 7420 apache    16   0  364m  36m  23m S  0.3  0.4   0:01.24 httpd                                                                                                                                                                                                                                                    
11485 apache    16   0  362m  23m  12m S  0.3  0.3   0:00.04 httpd                                                                                                                                                                                                                                                    
    1 root      15   0 10272  612  584 S  0.0  0.0   0:02.78 init                                                                                                                                                                                                                                                     
30129 root      16  -4 12536  400  396 S  0.0  0.0   0:00.00 udevd                                                                                                                                                                                                                                                    
30402 root      16   0  5840  580  480 S  0.0  0.0   0:14.01 syslogd                                                                                                                                                                                                                                                  
30414 rpc       18   0  7992  408  404 S  0.0  0.0   0:00.00 portmap                                                                                                                                                                                                                                                  
30439 root      18   0 10088  548  544 S  0.0  0.0   0:00.00 rpc.statd                                                                                                                                                                                                                                                
30478 memcache  15   0  141m 5364  516 S  0.0  0.1   1:16.34 memcached                                                                                                                                                                                                                                                
30496 root      16   0 60604  744  636 S  0.0  0.0   0:07.31 sshd                                                                                                                                                                                                                                                     
30507 root      15   0 21572  796  688 S  0.0  0.0   0:04.56 xinetd                                                                                                                                                                                                                                                   
31817 root      15   0  166m  932  860 S  0.0  0.0   0:00.03 httpsd                                                                                                                                                                                                                                                   
31820 psaadm    15   0  175m 7992 4596 S  0.0  0.1   0:02.31 httpsd                                                                                                                                                                                                                                                   
31924 root      15   0 19704  924  552 S  0.0  0.0   0:02.50 crond                                                                                                                                                                                                                                                    
13316 root      16   0 98528 3628 2796 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 1655 root      19   0  8600 1180  972 S  0.0  0.0   0:00.00 mysqld_safe                                                                                                                                                                                                                                              
 1695 mysql     16   0 4268m 464m 4684 S  0.0  5.2  10:05.19 mysqld                                                                                                                                                                                                                                                   
32564 root      16   0 98528 3612 2780 S  0.0  0.0   0:00.00 sshd                                                                                                                                                                                                                                                     
28489 root      15   0 98528 3628 2796 S  0.0  0.0   0:00.00 sshd                                                                                                                                                                                                                                                     
32152 root      16   0 98528 3612 2780 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 5781 root      15   0 98528 3628 2796 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 7801 root      17   0  356m  11m 5472 S  0.0  0.1   0:05.74 httpd                                                                                                                                                                                                                                                    
 7804 apache    16   0  366m  36m  21m S  0.0  0.4   0:00.35 httpd                                                                                                                                                                                                                                                    
 7805 apache    16   0  370m  31m  13m S  0.0  0.4   0:00.11 httpd                                                                                                                                                                                                                                                    
 8172 apache    15   0  366m  34m  19m S  0.0  0.4   0:00.62 httpd                                                                                                                                                                                                                                                    
 9430 apache    16   0  365m  45m  32m S  0.0  0.5   0:02.67 httpd                                                                                                                                                                                                                                                    
11393 apache    16   0  363m  37m  25m S  0.0  0.4   0:00.75 httpd                                                                                                                                                                                                                                                    
11551 apache    17   0  360m  31m  22m S  0.0  0.4   0:00.24 httpd                                                                                                                                                                                                                                                    
32345 apache    16   0  364m  39m  27m S  0.0  0.4   0:02.86 httpd                                                                                                                                                                                                                                                    
32472 apache    16   0  394m  70m  27m S  0.0  0.8   0:03.77 httpd                                                                                                                                                                                                                                                    
32488 apache    16   0  364m  42m  29m S  0.0  0.5   0:02.38 httpd                                                                                                                                                                                                                                                    
32501 apache    16   0  365m  41m  28m S  0.0  0.5   0:01.71 httpd                                                                                                                                                                                                                                                    
32644 apache    16   0  365m  36m  23m S  0.0  0.4   0:01.79 httpd                                                                                                                                                                                                                                                    
32765 apache    15   0  364m  39m  26m S  0.0  0.4   0:02.65 httpd                                                                                                                                                                                                                                                    
 1334 apache    16   0  368m  42m  26m S  0.0  0.5   0:02.77 httpd                                                                                                                                                                                                                                                    
 1339 apache    15   0  362m  39m  29m S  0.0  0.4   0:01.84 httpd                                                                                                                                                                                                                                                    
 1351 apache    15   0  364m  43m  30m S  0.0  0.5   0:02.59 httpd                                                                                                                                                                                                                                                    
 1553 apache    16   0  363m  41m  29m S  0.0  0.5   0:02.74 httpd                                                                                                                                                                                                                                                    
 1555 apache    16   0  365m  37m  24m S  0.0  0.4   0:01.59 httpd                                                                                                                                                                                                                                                    
 1564 apache    15   0  365m  40m  27m S  0.0  0.5   0:01.88 httpd                                                                                                                                                                                                                                                    
 1569 apache    16   0  364m  35m  22m S  0.0  0.4   0:00.63 httpd                                                                                                                                                                                                                                                    
 1573 apache    15   0  367m  39m  24m S  0.0  0.4   0:01.66 httpd                                                                                                                                                                                                                                                    
 1575 apache    16   0  363m  36m  24m S  0.0  0.4   0:01.88 httpd                                                                                                                                                                                                                                                    
 1583 apache    16   0  364m  34m  21m S  0.0  0.4   0:01.92 httpd                                                                                                                                                                                                                                                    
 1594 apache    15   0  367m  44m  29m S  0.0  0.5   0:03.71 httpd                                                                                                                                                                                                                                                    
 1689 apache    15   0  365m  38m  24m S  0.0  0.4   0:01.47 httpd                                                                                                                                                                                                                                                    
 1690 apache    15   0  365m  39m  26m S  0.0  0.4   0:01.18 httpd                                                                                                                                                                                                                                                    
 1710 apache    16   0  363m  34m  23m S  0.0  0.4   0:00.99 httpd                                                                                                                                                                                                                                                    
 1725 apache    15   0  364m  39m  26m S  0.0  0.4   0:01.80 httpd                                                                                                                                                                                                                                                    
 1726 apache    16   0  365m  40m  26m S  0.0  0.5   0:00.90 httpd                                                                                                                                                                                                                                                    
 1737 apache    16   0  364m  30m  17m S  0.0  0.3   0:00.46 httpd                                                                                                                                                                                                                                                    
 1919 apache    15   0  363m  34m  22m S  0.0  0.4   0:00.83 httpd                                                                                                                                                                                                                                                    
 1930 apache    16   0  364m  33m  21m S  0.0  0.4   0:00.50 httpd                                                                                                                                                                                                                                                    
 1934 apache    15   0  364m  40m  27m S  0.0  0.5   0:02.20 httpd

И критические настройки httpd.conf:

Timeout 120
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 3

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

Чтобы настроить Apache на использование большего количества ЦП, вам необходимо избавиться от узкого места, которое в настоящее время не позволяет Apache использовать больше ЦП. Поскольку выполнение запросов занимает 3–8 секунд, вы знаете, что есть узкое место, и вам нужно его найти.

На что стоит обратить внимание:

  • Определите, является ли узел Apache узким местом. Если ты бежишь uptime пока запросы занимают 3-8 секунд, отображается ли нагрузка высокой (двузначной или трехзначной)? Вы не можете много в этом разобраться, потому что высокая нагрузка может означать, что проблема существует в другом месте, но если нагрузка низкая, а запросы занимают 3-8 секунд, это, вероятно, удаленная проблема.
  • Если у вас есть ресурсы, необходимые для этой службы на других машинах, например, для базы данных, проверьте также там загрузку системы.
  • Посмотрите на вывод «vmstat 1» на сервере. Это покажет статистику использования системы, обновляемую каждую секунду. На что следует обратить внимание: «cpu wa» (если это двузначное число, вероятно, означает, что диск переполнен), «swap si / so» (если они отличны от нуля, это означает, что у вас закончилась память) и «cpu id "(время простоя процессора, если оно меньше 10, ваш процессор загружен). Если время «cpu sy» велико, это может указывать на то, что вы слишком много разветвляете (возможно, Apache MaxRequests слишком мало?) Или другие накладные расходы на уровне ядра. Нажмите Control-C, чтобы завершить вывод «vmstat 1».
  • Вы можете запустить "strace -p [APACHE PROCEED ID]", чтобы получить представление о том, что делают процессы Apache. Это показывает системные вызовы, которые они делают, но если вы не знакомы с системными вызовами, вы можете иногда получить информацию, просто прочитав вывод в виде текста. Например, на прошлой неделе у меня был сервер, который действовал как ваш, и strace останавливался на несколько секунд, и последнее, что отображалось, было сообщением журнала, и я отследил его до файла PHP, который отправлял кучу журнала сообщения в системный журнал.

Если у вас не установлен «munin», вам, вероятно, следует. Если да, посмотрите на графики, чтобы увидеть, как изменяется загрузка системы, когда система реагирует медленно и когда она работает хорошо. Если вы видите скачки на графиках, они могут указывать на узкое место. Если вы видите пустые области в все графики, что, вероятно, означает, что система насыщена. Если только графики Apache пусты, это, вероятно, означает, что Apache достиг максимального количества подключений, что, вероятно, является побочным эффектом проблем с производительностью.

Также обратите внимание, что если у вас несколько процессоров, но у вас есть однопоточное приложение, такое как Zope, сидящее за Apache, возможно, один из ваших процессоров перегружен, а другие простаивают. Если вы нажмете «1» вверху, это покажет вам использование каждого отдельного ядра. Ищите тот, который все время простаивает 0%, тогда как другие намного больше бездействуют.

Используя эти методы, я смог изолировать и решить большинство подобных проблем с производительностью.

Если вы прочитаете множество предыдущих вопросов и ответов о производительности apache, вы получите некоторые подсказки.

Вы пропустили много информации из своего файла httpd.conf, которая нам понадобится, чтобы увидеть, как настроен сервер - если вы включили конфигурацию с потоками и предварительную вилку - что вы используете?

Загрузка процессора очень низкая (~ 10%). В результате время загрузки страницы сильно замедляется.

Нет, у вас все наоборот. Время загрузки страницы замедляется, но единственное, что можно не учитывать, поскольку это способствует замедлению, - это процессор.

Там может Это могут быть вещи, которые вы можете делать с процессором, которые могут уменьшить проблемы с производительностью где-то еще (используя сжатие, программный рейд), но на самом деле ошибка находится в другом месте.

Каков средний RTT (от HTTP-трафика, а не ICMP)? Сколько операций ввода-вывода на диске? Как выглядит профиль памяти? Вы просто обслуживаете статический контент? Если нет, то что еще участвует в создании контента? Вы отслеживали входящий и исходящий сетевой трафик на сервер, чтобы увидеть, есть ли там что-то, чего вы не ожидали? Проверяли ли вы выданные инструкции по кешированию?