Почему зависает сайт при свободной памяти и процессоре?

Такая проблема!
Сайт крутится на VDS: Centos 7 (от BitrixVM) + php 7.1 + apache 2.4 (prefork) + nginx.
Уже как 2 недели бывают краткосрочные зависания сайта (скорее всего apache2) (не зависит от времени суток и дня недели)
при этом:
- оперативки более чем достаточно (200-300 мб свободно, так почти
всегда), swap почти весь свободен, процессор в моменты зависания по
большей части свободен (не выше 7% загрузка), диск не нагружен.
- В логах apache, nginx, mysql пусто, без ошибок,
- DDOS-атаки не видно, всплеска посещаемости нет.

Зависание как будто от тяжёлого процесса апач и ничего больше не дает делать, но при этом зависают сессии всех пользователей, а не только моя. Это при prefork! Nginx в этот момент работает штатно и неавторизованным пользователям отдаётся сайт из кэша.

В момент зависания в списке запущенных процессов httpd пропадает, как будто не запущен, а попытка его перезапуска командой systemctl restart httpd, не приносит результата, зависает на 1-2 минуты, как будто тяжелый процесс держит апач. Перезапуск апача не гарантирует, что работа восстановится, бывает что через минуту все повторяется снова.

Служба поддержки VDS таймвеба бегло всё проверила и тоже ничего не нашла.
Куда копать?
Помогите!

Скрин atop в момент зависания:
5da4688a156b2908240059.png
  • Вопрос задан
  • 2592 просмотра
Решения вопроса 1
@MIXANIX Автор вопроса
Проблему решил.
Дело было в Bitrix CMS, а именно нашел функцию SessionTable::lock, которая шлет запросы GET_LOCK("***", 60) в базу.
Как назло в документации о ней мало что написано. Не понятно, когда она срабатывает, но у меня подозрение что когда число одновременных запросов к MySQL подбирается к лимиту.
В результате получаем блокировку сайта на 1 минуту и пустые логи.
Часть запросов к БД которые шли через Битрикс прописал на чистом PHP и зависания прекратились.
Всем спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 7
Viji
@Viji
Associate DevOps Engineer
А что насчет IOPS, не возрастает ли нагрузка на диск в это время? Может он и есть слабое место?
Ответ написан
@402d
начинал с бейсика на УКНЦ в 1988
https://ruhighload.com/%D0%9A%D0%B0%D0%BA+%D0%B2%D...

50 медленных запросов и никто кроме рута 51 не сможет присоединиться.
Ответ написан
Нечего гадать. Нужна информация по мониторингу параметров ОС.
Чтобы узнать подробнее, нужно иметь историю событий. Программа atop умеет вести учет процессов и ресурсов, позволяя позже проиграть историю, выяснив причину проблемы.
https://haydenjames.io/use-atop-linux-server-perfo...
https://haydenjames.io/linux-server-performance-di...

Как диагностировать зависание php-fpm процессов?
Ответ написан
@FOcuswOwX
Сайт не обращается к каким-нибудь сторонним ресурсам? Похоже что ответ не получается и зависает
Ответ написан
Age1mar
@Age1mar
DevOps a little
Если по "железным" ресурсам всё проверили, то попробуйте использовать систему распределённой трассировки типа zipkin. Может быть такая система сможет помочь найти узкие места.
Ответ написан
Комментировать
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Покажите вывод команды
cat /proc/sys/fs/file-max

Ну и вообще то облазить /var/log на предмет странных записей в этот момент было бы неплохо.
Ответ написан
iotop -oka и подожди минут 10
так же вклчи в вм мониторинг nagios
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы