С нескольких дней наш веб-сервер имеет некоторые высокие пики загрузки вокруг каждого часы.
Веб-сервер является выделенным сервером с поршнем на 32 ГБ и 4 ядрами. Это запускает тяжелое веб-приложение на основе drupal с большим количеством хранивших данных и API отдыха.
На некотором времени процесс PHP-FPM, кажется, прекращает отвечать без любой причины (никакое определенное выполнение задачи или особый интенсивный трафик)
Вот моя конфигурация пула (я недавно увеличил число max_children, чтобы видеть, решает ли это проблему),
pm = dynamic
pm.max_children = 80
pm.start_servers = 25
pm.min_spare_servers = 10
pm.max_spare_servers = 40
pm.max_requests = 200
request_terminate_timeout = 50s
Вот некоторые снимки экрана нового пережитка, показывающие, что происходит, когда проблема происходит.
Вы видите число детей, порождающих сигнальную ракету в течение приблизительно 10 минут, затем спускаетесь назад к normals.
Какие-либо идеи о том, что могло вызвать те аварийные скачки?
[edit1]
Чтобы быть более конкретным по поводу системных спецификаций, сервер также выполняет NGINX, MySQL, MEMCACHED и ПОСТФИКС. 16 ГБ памяти выделяются mysql базам данных. ЦП является Intel(R) Xeon(R) CPU E3-1225 V2 3.20 ГГц
Для получения лучшего обзора использования сервера, когда проблема происходят можно проверить снимок экрана newrelic обзора
[edit2]
Вот то, как главный взгляд посреди одного из тех пика
top - 13:28:53 up 124 days, 2:15, 1 user, load average: 64.25, 25.29, 12.02
Tasks: 177 total, 77 running, 100 sleeping, 0 stopped, 0 zombie
%Cpu(s): 99.9 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 32917328 total, 32257288 used, 660040 free, 236848 buffers
KiB Swap: 1046520 total, 90328 used, 956192 free, 8352948 cached
И спустя несколько минут после этого
top - 13:35:09 up 124 days, 2:21, 1 user, load average: 5.43, 20.97, 16.33
Tasks: 149 total, 3 running, 146 sleeping, 0 stopped, 0 zombie
%Cpu(s): 47.2 us, 1.7 sy, 0.0 ni, 43.8 id, 6.4 wa, 0.0 hi, 0.8 si, 0.0 st
KiB Mem: 32917328 total, 30507792 used, 2409536 free, 236852 buffers
KiB Swap: 1046520 total, 90328 used, 956192 free, 8308028 cached
Также осуществленный проверка NGINX регистрируется, чтобы просмотреть, если у нас было внезапное увеличение запроса, что то время, вот результат этой команды:
grep "15/Sep/2015:13" access.log | сокращают-d [-f2 |, сокращает-d]-f1 | awk-F: '{Печатают дюйм за 2$: "3$}' | вид-nk1-nk2 | uniq-c | awk '{если (1$> 10) печатают 0$}'
467 13:00
463 13:01
497 13:02
421 13:03
473 13:04
471 13:05
480 13:06
390 13:07
430 13:08
430 13:09
405 13:10
449 13:11
415 13:12
451 13:13
424 13:14
476 13:15
483 13:16
398 13:17
433 13:18
474 13:19
458 13:20
434 13:21
403 13:22
408 13:23
487 13:24
440 13:25
526 13:26
70 13:27
104 13:28
373 13:29
943 13:30
706 13:31
446 13:32
447 13:33
461 13:34
427 13:35
303 13:36
Я обычно работаю системным администратором в рекламной компании, которая использовала php-fpm на своих рекламных серверах. У нас было max_requests
установлено значение 20,000 или что-то очень высокое. У них была проблема до того, как я начал, где load/memory/cpu будет скакать, как вы видите, а затем возвращаться вниз по циклам в течение дня. Это произошло из-за того, что почти все процессы php-fpm перезагружались, т.к. он почти одновременно достиг предела max_requests
.
Возможно, вы столкнулись с той же проблемой. Мы решили эту проблему, запустив 4-5 мастер-процессов php-fpm на машину, и пошагово запустили процесс.
В конце концов, мы установили несколько экземпляров на 0
для max_requests
, чтобы посмотреть, нужно ли запускать. Оказалось, что в приложении не было плохих утечек памяти, и используемая память на процесс php-fpm росла очень медленно. Это также было намного более случайным и мы использовали монитор
для просмотра памяти каждого php-fpm мастера для просмотра использования памяти и если оно превысило определённый лимит, монитор
перезапустил php-fpm