5

簡単なツール、またはstrace出力を視覚化できるものまたは他の方法で簡単にふるいにかけることができるものに変換する方法はありますか?アプリケーションがどこで問題になっているのかを把握する必要がありますが、それを階層化すると大量のデータが生成されます。このアプリケーションとそのスレッドが実行していること(または実行しようとしていること)を大規模に追跡しようとすると、すべてのシステムコールを読み取ることが非常に困難になります。

私には何の予算もありません。私たちは純粋なLinuxショップです。

4

2 に答える 2

5

問題がネットワークの問題である場合は、 strace出力をネットワーク関連のシステムコールに制限することを試みることができます。

strace -e trace=network your_program

于 2011-06-22T21:02:01.230 に答える
2

はい、-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もう1つの方法は、特定のシステムコール( /など)でフィルタリングして、sendto受信データと送信データを視覚化することです。たとえば、PHPプロセスのデバッグ例です。

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

関連:シェル内のstraceをプレーンテキストに解析する方法は?

于 2016-04-11T20:02:38.783 に答える