Как отследить и отладить зависший процесс Apache

У меня проблема с моим бэкэндом PHP, я не могу понять. Я испытываю периодическое «зависание» некоторых процессов apache при запросе API (PHP-код, возвращающий json).

Apache никогда не перестает доставлять файлы (html, css, js и т. Д.), Только ограниченное количество вызовов API вызывает проблему. Запрос находится в состоянии ожидания на вкладке «Сеть» в инструментах разработчика Chrome, и даже если я запускаю apachectl restart запросы все еще ожидают после перезапуска. Я вижу, что все httpd процессы не прекращаются, когда я бегу apachectl stop, Я должен убить их killall -9 httpd,

Когда возникает проблема, я должен остановить Apache, убить все процессы httpd и снова запустить apache. Если я не перезапускаю большинство вызовов API, зависают (вероятно, те, которые назначены зависшим дочерним процессам).

Все вызовы API, которые вызывают проблему, включают вызовы MySQL.

Проверяя список процессов на сервере MySQL, соединения установлены, но в состоянии SLEEP.

Проблема звучит как проблема кода или проблема конфигурации?

Журналы ошибок (mysql и apache) ничего не показывают, поэтому я думаю, что я должен попытаться strace (dtruss на mac?) процесс apache. Как я могу это сделать?

Среда:

  • OS X 10.10.2 Yosemite
  • Apache / 2.4.9 (Unix) — Установлен с OS X
  • MySQL 5.6.22 (доморощенный) — innodb, интерфейс mysqli, непостоянные соединения
  • PHP 5.6.5 (доморощенный) — php56, mcrypt, php56-mcrypt, php56-apcu, php56-xdebug

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]