Сайт периодически зависает (php-fpm Finishing)

Репорт: сайт периодически тормозит, не грузится.

Действительно, пытаешься зайти на сайт, он то открывается, то нет. Чаще нет. Что замечательно, по админке ходится нормально. Соответственно, подозрения падают на новую тему.

Второй взгляд: сайт периодически блокируется по php-fpm, кончаются свободные воркеры.

А «тормозит» и «висит» сайт потому, что все 16 выделенных php-fpm воркеров заняты. Чем-то заняты. Неизвестно, чем. Но они пока не готовы принимать новые запросы, поэтому и висим.

Это мы видим через htop при php-fpm pm = dynamic, количество воркеров в спокойном состоянии будет не больше pm.max_spare_servers = 8,  а не все 16 процессов, которые видны в списке.

Третий взгляд: много воркеров php-fpm висит на статусе Finishing.

Мы знаем, что у Апача есть статус монитор, можно зайти на специальную страницу и увидеть, что там происходит с воркерами, заняты ли они. Стандартная настройка примерно такая:

, самое простое — открыть доступ для локального клиента. Значит через ssh на сервере мы можем выполнить команду вроде lynx localhost/mystatus и увидеть статусы воркеров.

Для пхп же всё не так просто. php-fpm как бы позволяет настроить подобную штуку:

, но прямого доступа к php-fpm у нас же нет, всё ловит апач. И когда пытаешься обратиться к такой ссылке, ничего не получается. К счастью, здесь нам помогает гугл и добрые люди, работает такая команда:

 

Если биндинг апача и пхп-фпм не через сокет, а по tcp, то там вместо адреса сокета нужно указать адрес. QUERY_STRING можно менять на свой вкус:

, глазами это читать неудобно, можно итоговый файл класть куда-нибидь в доступную по апачу папку и открывать её с клиента, а можно как я, просто подавать это куда-то в браузер командной строки. (может быть можно передавать поток сразу в него, без промежуточного файла, мне было не до этого, и так работает; это вам домашнее задание, сможете - напишите пожалуйста в комментариях)

 

Воркеры php-fpm выглядят так, если всё работает нормально

Так выглядят воркеры сейчас, когда всё работает нормально. Или Running, или Idle. А там было Finishing, всё висело на нём. Причём чтобы получить вот такую картину, это тоже нужно присоединиться к воркеру, хотя бы один должен остаться свободен. У меня настроены таймауты request_terminate_timeout = 70s, поэтому рано или поздно хотя бы один освободится.

Finishing. И что делать дальше?

Воспроизводим проблему

Проблема достаточно волшебная, повторяется только на определённой версии Safari. В developer console видно, что происходит. Там куча 404 для шрифтов. Причём в отличие от Хрома, сафари пытается загрузить все варианты шрифтов что видит, не важно что они не используются на текущей странице.

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

 

Причём, почему-то виснет именно процесс 404 для определённого браузера. Именно для залогиненного админа.

strace

strace это волшебная утилита. Можно наживую присоединиться к процессу php-fpm, который в данный момент Finishing и попробовать понять, на чём он там завис.

Подключаемся: strace -p 21424

Видим:

 

Причём сначала висит текст где-то до -1 ECONNRESET (Connection reset by peer), затем через секунд 5+ выводится как раз -1 ECONNRESET (Connection reset by peer) и всё остальное быстро-быстро, и процесс завершается.

То есть понятно, что задержки вызваны тем, что что-то пытается куда-то подключиться и отваливается. Может быть к БД (там всё хорошо, хз), может быть к какому-то внешнему ресурсу.

 

Виновник

А ещё мы видим, что рядом с -1 ECONNRESET (Connection reset by peer) находится аутпут html очень похожий на аутпут Query Monitor. Может быть дело именно в нём.

Отключаем Query Monitor и действительно, проблема больше не повторяется. Теперь процессы завершаются быстро, а не по 5+ секунд. Ну и осталось избавиться от 404 в ресурсах темы, чтобы не нагружать сервер генерацией 404 страниц.

Ура!

 

P.S.: Почему это проявлялось именно на этом Safari и не проявлялось на остальных я не знаю и скорее всего не узнаю. Пробовал создавать нового админа, чистить все куки и хранилища, открывать с инкогнито, поведение стабильно одинаковое.

Обсуждение

avatar

Linda321
Linda321
2025.04.13 01:30
Tom3044
Tom3044
2025.04.19 00:38
19slot
2025.12.06 16:22

Interesting analysis! Seeing patterns in numbers is fascinating, and a community like 19slot app seems to embrace that playful spirit with their games. A secure platform is key for enjoying the experience!

lonuoirongbachkim
2025.12.12 13:14

Lonuoirongbachkim, I recently gave lonuoirongbachkim a go, and it was interesting i would say. There are many options! But some are overwhelming at first. Have a check here: lonuoirongbachkim

jiibetplatform
2025.12.28 00:00

Jiibetplatform, huh? New to me. Exploring new platforms is always exciting. Let’s see if this gives me the thrills! Give it a browse jiibetplatform.

52betwin
2026.01.03 12:31

52betwin, e aí, apostadores de plantão! Encontrei um site com umas apostas bem interessantes. Se você curte adrenalina, dá uma espiada! Acesse 52betwin.

nilfortuneonline
2026.01.07 04:27

Honestly, nilfortuneonline surprised me. The interface is clean and modern, and I’ve been having some good luck there. Give it a look-see! nilfortuneonline

luvabet4
2026.01.14 16:21

Luvabet4 is pretty cool, I’ve had some fun times on there with their bonuses. Don’t go chasing big losses, but it is good for a go on luvabet4

jl777
2026.01.19 23:36
pin77 casino
2026.01.24 23:00
2abet1
2026.01.29 01:34

Alright, alright, alright! Heard about 2abet1.info from a buddy and decided to give it a whirl. Pretty solid platform, decent odds. Give it a shot if you’re looking for something new. 2abet1

505bet7
2026.01.29 01:35

Word on the street is 505bet7.net is the place to be. I’ve checked it out and I’m not disappointed. Great selection of games, and the site is easy to use. Give it a try! 505bet7

5pbet1
2026.01.29 01:35

Alright, folks, here’s the deal. 5pbet1 seems pretty straightforward so far. Just starting to browse and see what it all offers. I think its simplicity is why I like it so far. Check it out 5pbet1

winovacassino
2026.02.03 01:17

Heard some buzz about winovacassino. Gave it a spin, pretty solid. Nothing revolutionary, but reliable. Worth a look if you’re bored: winovacassino

cancun777
2026.02.03 01:17

I’ve been hitting Cancun777 lately, and honestly, it’s kinda fun. Not a huge win every time, but a decent way to chill after work. Check it out cancun777 — might just be your lucky day.

win444app
2026.02.03 01:17

Yo! Just downloaded the win444app. Gonna see if it’s as good as everyone says. Easy to use and a good selection of games so far. Download it yourself here: win444app

88lucky88
2026.02.04 10:47

Interesting points about bankroll management! Seeing platforms like lucky88 app download apk prioritize fast, local payments (GCash, PayMaya) is a huge plus for Philippine players. Convenience matters! 👍

9kboss apk
2026.02.08 00:29

Got the 9kboss apk on my phone, and it’s working great! Pretty slick interface. Check it out if you are mobile! 9kboss apk

frivi
2026.02.08 00:30

Is it Friv or Frivi? Either way this link frivi had some fun games to muck around on. Definitely worth bookmarking for down time.

tiranga download apk
2026.02.08 00:30

Alright, gamers! Help a brother out. Searching for the Tiranga download APK. Need that sweet, sweet offline play. Know a legit place? Get yours now! tiranga download apk

fc188
2026.02.09 21:45

[4109]FC188: The Best Online Casino Philippines for Legit Slot Games and Fast GCash Payouts. Experience the ultimate online gambling Philippines at FC188 Online Casino. As the best online casino Philippines, we offer a massive selection of FC188 legit slot games and lightning-fast GCash online casino Philippines payouts. Join today for a secure, fair, and thrilling gaming experience! visit: fc188

wpDiscuz