オリジナル:妹味(マイクロチャネル公共番号ID:xjjdog)、共有してくださいは、ソースを保管してください再現しました。
法医学のように、複雑なケースを恐れていない高度に分解体の恐れはありません。恐怖はほとんど、何も残されていません。空の、いずれかの高度な技術、豊富な経験は、起動することはできません。
複雑な生産環境では、数分ジャンプ処理の前に、現時点では、残る死ぬが横たわっていました。発見された証人として初めて、シーンを保つために注意を払う必要があります。時には、最悪の事態がもつれ、やけどされ、これは我々が見たいです。
人生のプロセスが消える前に、我々はまだやるべきことがたくさん持っています。この記事では、一般的に予約された手がかりをする方法を紹介します。最後に、このプロセスは、シェルスクリプトの自動化を使用します。
システム環境は、シーン内に存在しません。
図1に示すように、現在のネットワーク接続システム
ss -antp > $DUMP_DIR/ss.dump 2>&1
复制代码
このコマンドは、すべてのネットワークシステムは、出力ファイルss.dumpに接続されています。多くのケースでは、netstatネットワーク接続するので、代わりにSSをnetstatコマンドを使用する理由は、実装が非常に遅いです。
その後の処理、様々なカーディングを見て、ネットワーク接続の状態、またはあまりにもCLOSE_WAIT TIME_WAIT、またはその他の接続の問題をトラブルシューティングするためには、非常に便利です。
2、ネットワーク・ステータス・統計
netstat -s > $DUMP_DIR/netstat-s.dump 2>&1
复制代码
ネットワーク統計情報、netstatの-s.dumpファイルに出力。これは、出力の統計情報は、各契約によると、その後、ネットワーク全体の状況を把握非常に大きな役割を持つことができます。
sar -n DEV 1 2 > $DUMP_DIR/sar-traffic.dump 2>&1
复制代码
上記のコマンドは、sar出力電流のネットワークトラフィックを使用します。カード事態が発生した上で、このようなRedisのようにいくつかの非常に高速モジュール、で、カフカは、頻繁に実行されます。
3、プロセス・リソース
lsof -p $PID > $DUMP_DIR/lsof-$PID.dump
复制代码
これは非常に強力なコマンドです。あなたは、ファイルが開いているプロセスを表示することができ、これは人工物である、あなたは、プロセスへのリソース・ディメンションの全体の使用を表示することができます。リソース、遅く出力の多くでは、このコマンドは、待ちます。
4、CPUリソース
mpstat > $DUMP_DIR/mpstat.dump 2>&1
vmstat 1 3 > $DUMP_DIR/vmstat.dump 2>&1
sar -p ALL > $DUMP_DIR/sar-cpu.dump 2>&1
uptime > $DUMP_DIR/uptime.dump 2>&1
复制代码
これらの注文は、我々キャスト・アウェイ「(b)はCPUの章、」「ののLinux」の記事は、より詳しい説明があります。CPU負荷および現在のシステムからのメイン出力は、その後調査を容易にします。
これらの命令の機能は、重複の多くは、ユーザーがスクリーニングに注意を払う必要があります。
5、I / Oリソース
iostat -x > $DUMP_DIR/iostat.dump 2>&1
复制代码
一般的に、指向のサービスノードを計算するために、I / Oリソースがより正常になります。しかし、時にはまた、このような過度のログ出力などの問題、またはディスクの問題が発生します。各ディスクのこの基本的なコマンドの出力性能情報は、I / Oの問題をトラブルシューティングするために使用されます。
6、メモリの問題
free -h > $DUMP_DIR/free.dump 2>&1
复制代码
メモリーの問題は、より複雑で、この記事のxjjdogヒープ外の調査の概要を見ることができます興味を持っています。一般的に起こる問題は、私たちがセクションプロセスで説明し、JVMのメモリオーバーフローです。
freeコマンドは、オペレーティング・システム・メモリの一般的な概要を示すことができ、トラブルシューティングには、非常に重要なポイントです。
7、他のグローバル
ps -ef > $DUMP_DIR/ps.dump 2>&1
dmesg > $DUMP_DIR/dmesg.dump 2>&1
sysctl -a > $DUMP_DIR/sysctl.dump 2>&1
复制代码
それはdmesgのために来るとき、他の記事のxjjdogでは、我々は複数回を持っています。dmesgの多くの静かな死最後のサービスは、手がかりを残しました。
もちろん、PSは、コマンドの実行の最高周波数として、それはいくつかの基準値であることをバインドされて、出力です。
カーネル構成パラメーターので、システムは非常に大きな影響を与えることになります。だから我々は出力を持っています。
プロセスのスナップショット、最後の言葉
1、Jinfoの
${JDK_BIN}jinfo $PID > $DUMP_DIR/jinfo.dump 2>&1
复制代码
このコマンドが出力されます基本的なJavaプロセス情報。環境変数やパラメータを含みます。
2、GC情報
${JDK_BIN}jstat -gcutil $PID > $DUMP_DIR/jstat-gcutil.dump 2>&1
${JDK_BIN}jstat -gccapacity $PID > $DUMP_DIR/jstat-gccapacity.dump 2>&1
复制代码
jstatは出力電流のGC情報。一般的には、手がかりは、実質的に、ない場合、jmapはによって分析されることが分かります。
3、ヒープ情報
${JDK_BIN}jmap $PID > $DUMP_DIR/jmap.dump 2>&1
${JDK_BIN}jmap -heap $PID > $DUMP_DIR/jmap-heap.dump 2>&1
${JDK_BIN}jmap -histo $PID > $DUMP_DIR/jmap-histo.dump 2>&1
${JDK_BIN}jmap -dump:format=b,file=$DUMP_DIR/heap.bin $PID > /dev/null 2>&1
复制代码
jmapのは、現在のダンプ情報のjavaプロセスを取得します。上記のように、実際には、最も有用なのは、4番目のコマンドですが、あなたの前に3つのシステムの予備的な概要。グロス判断を下すことができます。
ファイルなので最初の4つのコマンドは、一般的に非常に大規模な生成しました。また、結果を得るためには、そのようなMATの詳細な分析としてインポートツールをダウンロードする必要があります。
4、実行スタック
${JDK_BIN}jstack $PID > $DUMP_DIR/jstack.dump 2>&1
复制代码
jstackは、実行スタックの時に取得します。通常、多くの倍の値は、一度私たちはここに来ます。この情報は、プロセス条件であなたのJavaスレッドを復元できることは非常に便利です。
top -Hp $PID -b -n 1 -c > $DUMP_DIR/top-$PID.dump 2>&1
复制代码
より正確な情報を得るために、我々は、プロセス内のすべてのスレッドについての情報を取得するには、CPUをtopコマンドを使用します。この方法では、最終的にリソースを消費するどこかで見ることができます。
5、先進的な交換
kill -3 $PID
复制代码
時には、jstackを実行することはできません。ほとんど反応しないようにJavaプロセスとして多くの理由があります。私たちは、プロセスに終了-3信号を送信しようとします。この信号は、Javaプロセスがログファイルにトレース情報を出力しますjstack楽しんで。Jstackプログラムが代替です。
gcore -o $DUMP_DIR/core $PID
复制代码
jmapの問題のために行うことができないだけでなく、ベンチから、つまり、GDB成分がのgcore。これは、コア・ファイルを生成します。私たちは、ダンプを生成するには、次のコマンドを使用することができます
${JDK_BIN}jhsdb jmap --exe ${JDK}java --core $DUMP_DIR/core --binaryheap
复制代码
状態および過渡状態の履歴
xjjdogここで二つの用語を作成します。瞬时态
これは、要素のスナップショットの種類が起こったことをいう。历史态
クローリングの周波数に応じて、固定された用語のビューの変化を監視するためのリソースを持っています。
また、ベースラインの問題があるため、これらの情報の多くは、CPU、メモリ、および他のそのようなシステム、直感的なほど良好ではない歴史への状態の瞬間状態の値として、があります。だから、より良く、より多くの意志クラスのシステム監視ツールがあるかどうか。
しかしなどlsofは、ヒープのために、これは混合メッセージのない時系列の概念ではない、便利な値を生成するために、監視システムを入力することはできません、それだけで過渡状態によって分析することができます。この場合、瞬時の状態より大きな値。
終わり
私は、プロセスの上に置くシェルスクリプトを書いてきました。あなたはgithubの上でそれを見つけることができます。オリジナルを見るために、左下隅をクリックして、それが満たすことができます。
https://github.com/sayhiai/shell
复制代码
多くの場合、予期せず、分散環境における障害の原因、これのあなたのスタンドアロン証拠が、それだけで表現であってもよいことに注目すべきです。それはうそませんでしたが、その背後にある意味は、多くの場合、間違ったブート問題の本質です。
私は良い感じ?それを奨励するために賞賛を指しています。
関連記事:
(a)の記事準備「キャスト・アウェイ」のLinuxの
Linuxののは、「キャスト・アウェイ」(b)のCPU記事
のLinuxの、「キャスト・アウェイ」(3)メモリチャプター
のLinuxの、「キャスト・アウェイ」(4)I / Oの章
のLinuxの、「キャスト・アウェイ」(5)ネットワークの記事
調査の概要外部のJavaヒープメモリ