2016-03-16 2 views
0

У нас есть серия серверов Apache, которые перегружены и сохраняют запросы в очереди некоторое время, прежде чем они будут обслуживаться.Обнаружение задержек работника Apache в PHP

Пока мы настраиваем это, мы поняли, что в наших журналах PHP не было видимости того, как долго эта задержка была ... есть переменная env, выведенная apache для каждого потока, или функция php, которая может определить, как долго запрос взял, а не из инициализации PHP, но когда Apache впервые открыл соединение?

+0

вы будете искать что-то серверное, как nagios. –

ответ

0

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

Если у Apache закончились рабочие, клиент просто сидел и дождался установления TCP-соединения. Apache не знал, что ждет еще один клиент, поскольку все работники в настоящее время заняты обслуживанием других клиентов.

PHP является последним компонентом, который узнает клиентский запрос, поэтому устранение проблемы или, по крайней мере, попытка выяснить, что запрос был значительно задержан, невозможен с использованием только данных сервера.

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

Смежные вопросы