簡単なツールがありますか、straceの出力を視覚化することができますか?アプリケーションがどこに間違っているのか把握しなければならないが、膨大な量のデータが生成される。このアプリケーションとそのスレッドが何をやっているのか(またはしようとしているのか)を大規模に追跡しようとすると、すべてのシステムコールを読むのが非常に難しいことが分かります。straceの出力を可視化する
私には何も予算はありません。私たちは純粋なLinuxショップです。あなたの問題はネットワーク1の場合
簡単なツールがありますか、straceの出力を視覚化することができますか?アプリケーションがどこに間違っているのか把握しなければならないが、膨大な量のデータが生成される。このアプリケーションとそのスレッドが何をやっているのか(またはしようとしているのか)を大規模に追跡しようとすると、すべてのシステムコールを読むのが非常に難しいことが分かります。straceの出力を可視化する
私には何も予算はありません。私たちは純粋なLinuxショップです。あなたの問題はネットワーク1の場合
、あなたは、
strace -e trace=network your_program
はいてネットワークに関連するシステムコールをstrace出力を制限しようとカウント時間を視覚化する-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
これは、大量のデータを分析することなく問題を特定します。
strace -e recvfrom,sendto -fp $(pgrep -n php) -s 1000 2>&1 | while read -r line; do
printf "%b" $line;
done | strings
関連:
もう一つの方法は、(recvfrom
/sendto
など)、例えば、デバッグPHPプロセス受信したデータを視覚化して送信するために、特定のシステムコールによってフィルタリングすることであるHow to parse strace in shell into plain text?
知ることが、問題の種類をお持っていると助けになる。しかし、一般的に私は髪の毛のような仕事をしているときに私はgrepをたくさん使っています。問題がクラスのコアダンプや特定のシステムコールであれば、そこに焦点を当てて、それを使って自分の道を後方に導きます。 –
@seth問題は、アプリケーションが何かに接続しようとしているようです...接続に失敗しましたが、ネットワークインターフェイスを盗聴してエラーが発生しました。ボックスの外には何も接続しようとしません。 2つのtcpセッションが確立され、ループバックで終了しました。これまでに送信されたデータはありませんでした。 – tMC
私は 'egrep 'socket | connect | send'/tmp/tr'を実行して、どのコマンドが失敗したかを調べようとします。エラーメッセージの正確なテキストに応じて、DNSまたはポート検索も失敗する可能性があります。 –