Визуализация вывода - PullRequest
       28

Визуализация вывода

2 голосов
/ 22 июня 2011

Существует ли простой инструмент, или, может быть, метод, позволяющий превратить вывод в strace во что-то, что можно визуализировать или иным способом легче просеять?Мне нужно выяснить, где приложение работает не так, но его распределение приводит к огромным объемам данных.Попытка отследить, что это приложение и его потоки делают (или пытается сделать) в более широком масштабе, оказывается очень трудной для чтения каждого системного вызова.

У меня нет бюджета ни на что,чистый магазин Linux.

Ответы [ 2 ]

4 голосов
/ 23 июня 2011

Если ваша проблема сетевая, вы можете попытаться ограничить вывод strace системными вызовами, связанными с сетью, с помощью

strace -e trace=network your_program

2 голосов
/ 11 апреля 2016

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

$ strace -c -fp $(pgrep -n php)
Process 11208 attached
^CProcess 11208 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 83.78    0.112292          57      1953       152 stat
  7.80    0.010454          56       188           lstat
  7.79    0.010439          28       376           access
  0.44    0.000584           0      5342        32 recvfrom
  0.15    0.000203           0      3985           sendto
  0.04    0.000052           0     27184           gettimeofday
  0.00    0.000000           0         6           write
  0.00    0.000000           0      3888           poll
------ ----------- ----------- --------- --------- ----------------
100.00    0.134024                 42922       184 total

Это позволит определить проблему без анализа большого количества данных.

Другим способом является фильтрация по определенным системным вызовам (таким как recvfrom / sendto) для визуализации полученных данных и отправленных, например, отладка процесса PHP:

strace -e recvfrom,sendto -fp $(pgrep -n php) -s 1000 2>&1 | while read -r line; do
  printf "%b" $line;
done | strings

Related: Как преобразовать strace в оболочке в обычный текст?

...