Эффективное использование strace

Прямо сейчас я имею дело с клиентским сайтом на php, который каким-то образом забивает все доступные процессы, которые он имеет со своим провайдером общего хостинга. Я хотел бы доказать ему, что именно и сколько процессов выполняется в тот момент, когда в браузер загружается определенная страница индекса. Я могу видеть около 5 или 6 всплывающих окон одновременно, но все они уходят и возвращаются так быстро, что я не могу проследить какой-либо конкретный пид.

У кого-нибудь есть представление о том, как я могу предвидеть номер pid, за которым я должен следить, чтобы узнать, что конкретно делает его сайт?

2 ответа

Используйте ps или pstree, чтобы найти родительский pid для всего, что вы хотите отследить. Я предполагаю, что это, вероятно, apache? Затем используйте -f опция strace, поэтому она также следует всем дочерним файлам. Наконец, если у вас есть относительно недавние изменения, вы можете просто проследить активность процесса с помощью -e trace=process,

Собираем все вместе и предполагаем, что ваш родительский процесс apache - это pid 1234:

strace -o logfile.txt -f -e trace=process -p1234

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

Интересно, будет ли следующая концепция слишком медленной (даже если она написана на скрипте), чтобы поймать pid:

  1. Делать inotifywait дождитесь доступа к определенной странице индекса.
  2. конфигурировать inotifywait для запуска

strace -o /tmp/wtf -f -e trace=process -p $(lsof -t /path/to/specific/index.php)

Или что-то подобное. Это было просто дикое предположение, фактически не пытаясь выше.

Смотрите также: XDebug и KCacheGrind.

Другие вопросы по тегам