Прямо сейчас я имею дело с клиентским сайтом на основе php, который каким-то образом забивает все доступные процессы, которые он имеет с его провайдером общего хостинга. Я хотел бы доказать ему, что именно и сколько процессов выполняется одновременно, когда в браузере загружается определенная страница индекса. Я могу видеть около 5 или 6 всплывающих окон наверху, но все они уходят и возвращаются так быстро, что я не могу найти ни капли на каком-либо конкретном pid для отслеживания.
У кого-нибудь есть идея, как я могу предвидеть номер pid, за которым я должен следить, чтобы узнать, что конкретно делает его сайт?
Интересно, будет ли следующая концепция слишком медленной (даже если написана сценарием), чтобы поймать pid:
inotifywait
дождитесь доступа к определенной странице индекса.inotifywait
для запуска strace -o /tmp/wtf -f -e trace=process -p $(lsof -t /path/to/specific/index.php)
Или что-то подобное. Это было просто безумное предположение, хотя на самом деле это не так.
Смотрите также: XDebug и KCacheGrind.
Используйте ps или pstree, чтобы найти родительский pid для всего, что вы хотите отследить, я предполагаю, что это, вероятно, apache? Затем используйте -f
вариант strace, чтобы он также следовал за всеми дочерними идентификаторами. Наконец, если у вас есть относительно недавняя версия strace, вы можете просто отслеживать активность процесса с помощью -e trace=process
.
Собираем все вместе и предполагаем, что ваш родительский процесс apache - pid 1234:
strace -o logfile.txt -f -e trace=process -p1234
должен доставить вас довольно близко к тому месту, куда вы хотите пойти.