У меня есть CMS на основе PHP, которая отправляет запросы поставщику услуг (ECM (управление корпоративным контентом) на основе Java, в настоящее время находится на том же сервере, что и мой PHP), и вставляет ответ на mysql.
То, что изначально начинается с хорошей скорости, медленно деградирует до 1/10 от исходной скорости выборки и вставки данных, которую я проверяю по количеству записей. У меня проблемы с выяснением причины ухудшения, и мне нужно выяснить, задерживается ли запрос cURL на конце ECM, где генерируется ответ (как XML), или когда ответ возвращается обратно на мой конец PHP. Нет изменений в загрузке сервера по отношению к базе данных (mysql), и у меня есть собственные причины полагать, что это не может быть проблемой оптимизации базы данных.
На самом деле я хотел бы знать, есть ли способ отслеживать, какие запросы делаются, когда они достигают ECM, когда ответ дается, и когда он снова достигает PHP (общая сумма активности каждого вызова cURL). Я проверил свой журнал доступа к apache, если они зарегистрированы как GET
и POST
запросов, но не смог их найти. Единственная опция на уровне кода - установить подробный результат, хотя я не уверен, насколько полезным будет результат. Следовательно, хочу знать возможные варианты того же самого.
Вы можете сделать захват пакета процесса (с помощью tcpdump или wirehark), а затем проанализировать его, чтобы узнать, сколько времени занимает каждая HTTP-транзакция. Имейте в виду, что вы также можете делать дампы пакетов для интерфейса 127.0.0.1, поскольку это может потребоваться, если запросы выполняются на localhost.
Чтобы увидеть запросы curl, вы можете предоставить конкретный пользовательский агент для запроса curl, а затем искать запросы от этого пользовательского агента в журналах apache.