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

Нужна помощь в устранении проблем с высокой загрузкой ЦП с помощью PHP-fpm

Есть проблема, которая сводит меня с ума. После того, как я попытался исправить проблему использования ЦП на моем VPS, загрузка ЦП выросла с 60% до 150%, и я понятия не имею, что вызывает проблему. Пожалуйста, помогите мне.

Я установил копию mediawiki на Linode 1024. Wiki работает на Niginx + PHP-fpm + MySql. У вики не так много трафика, всего около 4000 запросов в день, в основном от ботов Google и Bing. Раньше он использовал около 60% (из 400% на Linode) процессора. Я думал, что это немного завышено, поэтому два дня назад я пытался исправить проблему (не зная, что меня ждало). Я ничего не сделал, но добавил новую пустую строку в файл конфигурации вики, который изменил бы время изменения файла конфигурации, и тогда все кешированные файлы страниц были бы признаны недействительными. Я делал это раньше, и это приводило к высокой загрузке ЦП, но обычно требуется всего несколько часов, чтобы вернуть все в норму. Не в этот раз, моя загрузка ЦП была около 150% более двух дней.

Это php-fpm, использующий большинство успокоителей процессора. Использование 100% трех ядер - не редкость. Я этого раньше не видел. На Linode есть и другие сайты, но это должна быть вики. Потому что, если я отключу вики, загрузка ЦП скоро упадет примерно до 40%.

В тот день я также продублировал php-fpm.conf и открыл его, но не изменил.

Понятия не имею, что я сделал не так. Прошу помощи, чтобы не сойти с ума !!! Это php-fpm. Есть ли способ узнать, что он делает? Я имею в виду, какие сценарии связаны и какие коды функций работают?

верхняя:

top - 06:34:33 up 10 days,  4:23,  2 users,  load average: 1.10, 1.24, 1.37
Tasks:  76 total,   4 running,  72 sleeping,   0 stopped,   0 zombie
Cpu(s): 61.1%us,  3.1%sy,  0.0%ni, 32.8%id,  2.9%wa,  0.0%hi,  0.0%si,  0.1%st
Mem:   1028684k total,   945192k used,    83492k free,    89580k buffers
Swap:   524284k total,    18084k used,   506200k free,   530380k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                 
26721 www-data  20   0  208m  54m  34m R   99  5.4   0:09.07 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
26592 www-data  20   0  207m  45m  26m R   91  4.5   0:12.77 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
26706 www-data  20   0  196m  43m  34m S   47  4.3   0:15.19 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
26583 www-data  20   0  197m  45m  35m S   33  4.5   0:19.08 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
26787 www-data  20   0  206m  36m  18m R   25  3.7   0:00.41 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
26661 www-data  20   0  207m  46m  26m S   13  4.6   0:19.87 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
 1971 mysql     20   0  155m  57m 3952 S    8  5.7 383:57.81 /usr/sbin/mysqld                                                                                        
  242 root      20   0     0    0    0 S    1  0.0   0:51.36 [kworker/3:1]                                                                                           
 5711 root      20   0  139m  95m  580 S    1  9.5   0:41.30 /usr/local/bin/memcached -d -u root -m 128 -p 11211                                                     
19463 root      20   0  190m 3984 1284 S    1  0.4   0:02.66 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf                                          
29100 www-data  20   0 10928 5540  820 S    1  0.5   4:49.05 nginx: worker process

vmstat 30

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0  16912  81456  90784 554172    0    0     4     6    3    2 11  1 87  1
 0  0  16912  78036  91000 555356    0    0    38    34 1397  375 12  1 87  0
 4  0  16912  31776  91528 557508    0    0    78    42 3197  487 45  1 52  1
 1  0  16912  83356  91768 558576    0    0    35    56 2608  449 32  1 67  1
 1  0  16912  81548  92040 559720    0    0    41    31 1243  432  8  1 91  1
 2  0  16912  53056  92332 562744    0    0   105    33 2013  581 17  1 81  1
 2  0  16912  73236  92552 564844    0    0    68    36 1968  615 16  1 82  1
 0  0  16912  91612  92904 566676    0    0    69    35 1845  692 13  1 85  1
 1  0  16912  71248  93180 568428    0    0    58    33 1952  604 15  1 82  1
 1  0  16868  55952  93516 572660    1    0   144    42 1801  637 12  1 86  1
 2  0  16868  48324  94416 577844    0    0   189    66 2058  702 17  1 80  2
 1  0  16928  58644  94592 578184    0    2   160    49 2578  723 25  1 70  3
 5  0  16928  22600  94980 580568    0    0    89    32 1496  361 13  0 85  1
 0  0  16988  49256  94500 576396    0    2    41    37 1601  426 14  1 85  0
 5  0  18084  24336  86032 502748    0   37    83    68 2989  562 42  1 56  0
 1  0  18084 123604  86376 506996    0    0   118    41 2201  573 22  1 76  1
 2  0  18084 126984  86752 508876    0    0    64    53 1620  490 13  1 85  1
 2  0  18084 103104  87148 510768    0    0    71    37 2757  602 33  1 64  1

Вы можете начать с уменьшения количества запросов Google и Bing ... Вы настроили robots.txt? Исключите ScriptPath из сканирования, чтобы индексировались только канонические URL-адреса страниц, но не URL-адреса с параметрами для api.php или index.php. Также при необходимости установите задержку сканирования.

Многие сайты MediaWiki замедляются поисковыми системами из-за небольших ошибок конфигурации.

Попробуйте использовать strace -p 26721 чтобы увидеть, что происходит в процессе. Чтобы узнать, какой дескриптор файла используется lsof -p 26721.

ЦП расходуется в% пользовательском состоянии, попробуйте найти дополнительную информацию о PID, потребляющих большую часть ресурса в верхнем выводе. Как уже говорилось, запустите на нем strace -ffttTo /tmp/strace.out -p, чтобы узнать, где он застрял или сколько времени требуется для последовательных системных вызовов. Если есть задержка, вы можете определить ее оттуда.

Также жизнеспособными вариантами являются lsof, fuser.