Linuxのサーバーのパフォーマンスの問題、調査中のこれらの仕様

同じ時間のLinuxオペレーティングシステムベースを実行しているサーバーでは、パラメータ情報の多種多様を特徴づけるます。一般的に、運用・保守担当者、システム管理者は、非常に機密性の高いデータになりますが、開発者にとって、これらのパラメータはすぐに手がかりを見つけるのに役立ちますあなたの非作業プログラムは、多くの場合、追跡場合は特に、また非常に重要です。

ここではもちろん、多くのツールは、プロセスは/ proc内のデータ、/ SYS、およびそれらより詳細かつ専門的なパフォーマンスの監視とチューニングを分析することによって動作している、あなたはまた、より専門的である必要があり、システムパラメータを表示するには、いくつかの簡単なツールですツール(PERF、SystemTapの、など)と技術がああ完了します。

結局のところ、パフォーマンス監視システム自体は、大学を依頼することです。

Linuxのパフォーマンス

、CPU、メモリクラス

1.1
トップ

トップ〜➜
Linuxのトップ-
最初の行の後ろに3つの値システムは前5に平均負荷、15であり、その値は、実行CPU部を超える場合、システム負荷が、着実に減少傾向を上昇して見ることができます数は、その後、CPU性能が飽和しボトルネックとなっています。

タスク状態の統計情報システムの2行目。これを実行すると、CPU上で実行され、実行するようにスケジュールされるなど、と言うことは不要である。中断の一部を停止し、睡眠は通常、セグメンテーションは割り込みと無停電タイプを含むことができるタスク(例えばIOオペレーションとして)イベントを待ちますタスク、通常SIGSTOPを送るか、Ctrl-Zを中断することができる操作するのフォアグラウンドタスク、ゾンビゾンビのタスク、プロセスがリソースを終了するが、自動的に回復しているが、タスク記述子が親プロセスのリリースがアクセスする必要の後に終了するタスクが含まれ、このようなプロセス親が早期終了またはプログラムの設計が間違っているかどうかに特に注意を払う必要があります。このプロセスの出現を呼び出すために待機していなかったのいずれかのため、無効状態として示します。

三行目CPU使用率のタイプは、次のような状況があります
(US)ユーザー:CPU時間をユーザーモードで占められ、低いnice値(優先)(素敵な<= 0)。通常の状況下では、限り、CPU時間のほとんどは、プログラム実行のこのタイプでなければなりませんので、サーバーは、非常に混雑していないと
(SY)システム:CPUは、システムコール(システムコール)を介してユーザモードからオペレーティングシステムに、占有カーネルモード時です通常、この値は比較的小さくなりますが、IOサーバはより集中行う際値が比較的大きい場合、カーネル・モードは、特定のサービスを実行するために
高いnice値のCPU(低優先度)ユーザー:(NI)ナイス優先度の低い動作に状態が時間(すてき> 0)をとります。新しいデフォルト・プロセスは、0 =素敵開始または手動のreniceのsetpriority(でない限り、ここに含まれていません)プログラムの値を変更するには良い方法
(ID)アイドル:アイドル状態のCPU(実行カーネルアイドルハンドラは)時間を占領しました
(WA)iowaitの:IOはそれがない完了するまでにかかる時間を待つ
ハードウェア割り込み、システムの処理時間が消費:(HI)IRQ
(SI)のsoftirq:消費ソフト割り込み、システムの処理時間は、覚えているソフト割り込み分割softirqs、タスクレット(実際には、前者は、)ワークキュー特殊なケースで、ここでは分からないではありません結局何時間の統計、割り込みコンテキストの作業キューを実行しています
(ST)が盗む:CPUは、共有物理CPUの下にあるので、この時間は、仮想マシンのハイパーバイザーのCPUスケジューリングを待機する時間を示すためにも意味し、仮想マシンに仮想マシンを理にかなっているCPUのスケジューリングにこの時間ハイパーバイザー他のCPUを実行し、この期間のCPUリソースは、「盗まれた」ことにします。私のマシン上のKVM VPSの値は0ではありませんが、この大きさのわずか0.1は、オーバーブッキングVPS状況を判断するために使用することができないのですか?

多くの場合、CPU占有率が何かを意味、それはまた、対応する調査との考えで指定された状況下で、高いサーバーのCPU使用率を示します:
過度の利用者の利用時間は、通常、いくつかの個々のプロセスは、多くのをとるときCPUは、この時間は、トップてプログラムを見つけるのは簡単である、疑わしい異常な手順場合は調査を進めるホットスポットを識別するために、この時間は、PERFおよび他のアイデアによって機能を呼び出すことができ、
ときに過度のシステム使用時、(端子IOを含む)IOオペレーション場合そうでない場合は、そのようなファイルサーバ、データベースサーバおよびサーバの他のタイプとして、このセクション内のCPU使用率が高くなる可能性が高い(例えば、> 20%)が問題になっているカーネル・ドライバ・モジュールの可能性が高いいくつかの部分があり、
時に素敵な占有高すぎる、彼らは通常、意図的な行動、プロセスは、それがCPUのための要求なし保証するために、他のプロセスに圧倒そのnice値を設定しますが、いくつかは、高いCPUを知っとるプロセスのイニシエータ;
とき高稼働率際iowaitのを通常は、特定のIO動作プログラムの効率が低いことを意味、または非常に低いパフォーマンスは、読み取りおよび書き込み操作を長い時間を必要とするIOデバイスに対応します インテルは達成;
ときに高いIRQ /のsoftirq占有率は、IRQ要求の数が多い、/ procのをチェックして、問題が/ファイルを中断一番下に取得するには、この時点で、その結果、一部の周辺機器との非常に可能性のある問題であり、
占有率があまりにも盗むされたとき高い時は、黒の心は、仮想マシンがそれをオーバーブッキングベンダー!

第四及び第五のラインは、物理メモリと仮想メモリ(スワップ)の情報です:
合計= + +無料BUFF /キャッシュに使用され、そして今一緒に情報Memのキャッシュされたバッファの合計が、バッファとキャッシュされました

多くの場所のMemの関係は、それを明確にしませんでした。ブロックのためのバッファロー・ディスク・キャッシュである、(など、スーパーブロック情報として、)ファイルシステムのメタデータ・キャッシュの主原料ブロック:実際に、それはのバッファおよびキャッシュの/ proc / meminfoにあるこれら二つのフィールドのデータ値を比較することによりこの値は、(約20m)、一般的に小型であり、キャッシュされたファイルへのアクセスと利用の効率を高めるために、ある特定のファイルへの読み取りキャッシュにある、ファイルシステムのファイルキャッシュに使用されると言うことができます。

そして、無駄Memのはどのくらいのメモリ容量のプログラムに新しいターン、そして一般的に無料+バフ/非常にキャッシュさを与えることができます交換なし、を示すために新しいパラメータ値であるが、それはまた、無料の上記のステートメントを確認し、 +バッファ+はMemの実際の物理メモリが利用できるキャッシュされました。また、スワップの使用は必ずしも悪いことではありませんので、スワップの使用量は、深刻な引数ではありませんが、良いことではありません、そしてこの状況は、一般的に、物理メモリ不足の状況を表していることに注意する必要があります/アウトで頻繁に入れ替えます。

最後に、各プログラムのリソース消費のリストは、ここでCPUの使用率は、すべてのCPUコア占有率の合計があります。トップは通常行われた場合、プログラム自体は、読み取り/ procの操作の多くになりますので、基本的にトップのプログラム自体も最高の間になります。

トップ、コンソールリアルタイムの情報システムを監視非常に強力であるが、通常のためではなく、長時間(数日、数ヶ月)負荷情報監視システムは、だけでなく、短命のプロセスの統計情報を与える見逃せないだろう。

1.2
vmstatの

vmstatのは、一般的に使用されるシステムは、以下のスクリーンショットは、私はブースト-j4システム負荷をコンパイルするために使用するものであるトップに加えて、別のツールを検出しています。
Linuxベースのvmstat
R&LT、実行可能なプロセスの数を示すデータは、一般的に適合し;そしてbはプロセス無停電睡眠の数を表し、トップ・スワップ・使用の値に仮想メモリの量にswpd指示が、意味され、手動であればBIドメインをioを、BOは、ディスクごとのブロックの数を示し、(ブロック/秒)送信受信することと、バッファの数は、一般的に、通常、複数のより小さいmemが20Mバッファような大きさを、キャッシュされたという点で、システムドメインコンテキストスイッチの数の切り替え処理ので(クロック割り込みを含む)は、第2のシステムあたりの割り込みの数、CSショーの原因を示します。

ここでは、多くの人々はそれがCPUコアCPUコア+ 1であるかどうかを、Linuxカーネルパラメータ-jをコンパイルするときに、以前に絡まっと思いましたか?パラメータ値を変更し、上記のvmstatのオープンにより、ブーストをコンパイルするLinuxカーネルを同時に監視、コンテキストを見つける-Jどちらの場合も変わらず切り替え、コンテキストスイッチでのみ有意な増加は値-jの有意な増加を持っていますが、する必要はありませんようです時間の特定のコンパイラの長さは、私がテストしていないものの、このパラメータは、あまりにも、もつれています。システムやベンチマークの状態で開始されなかった情報は、パラメータのコンテキストスイッチ> 100000プログラムは問題を抱えています。

1.3
pidstat

スタック空間、欠落しているページ、メイン受動的スイッチングおよびその他の情報をパノラマビュー - あなたは、特定のプロセスは、包括的な追跡を行いたい場合は、のpidstatよりもより適切なものは何もありません。このコマンドは、最も有用なパラメータ-tである、あなたは、各プロセス・スレッドの詳細を設定することができます。

-r:表示するページフォールトとメモリ使用量は、ページフォルトがプログラムでマッピングされているが、仮想メモリ空間にアクセスする必要があるが、まだ物理メモリ内のページにロードされていない、ページフォールトの2種類がさ
/ sの指をminflt必要性はすでに物理メモリ内に存在する(例えば共有ページ、キャッシュメカニズムなど)が何らかの理由で物理ページにアクセスするには、しかし、現在のプロセスのページテーブルを参照していないマイナーフォルト、の、MMUはのみに対応するエントリを設定する必要がありますそれが、この価格はかなり小さくされて
いない空きページ場合majflt / sが主要な障害を意味し、MMUは、(現在利用可能な物理メモリに空き物理ページを適用するために、別の物理ページスワップに切り替える必要性を必要とします物理ページへの外部データからロードされ、その後、)空き物理ページを取得するために解放し、対応するエントリを設定するには、この価格はかなり高く、前者はいくつかのデータレベル差があります

-s:StkSize含むスタック使用量は、スレッドスタックスペースのために予約、およびスタック領域のStkRefが実際に使用。ulimitのは、8196Kのサイズのスタック領域の上にデフォルトのCentOS 6.xは10240Kで見つけ-s、およびCentOSの7.xでは、Ubuntuのシリーズのデフォルトのスタック領域を使用し
pidstat
以前のパラメータを持つ類似したCPUの使用状況、:-uを

-w:cswchに細分スレッドコンテキストスイッチの数は、/ sが自動的にので、このような要因、ならびにnvcswch / sのスレッドCPU時間によって引き起こされるリソースを待っによる受動スイッチング統計情報に切り替えます

操作pidstat後にプログラムのPID psを取得するたびに非常に面倒だと思われるので、キラーは、-Cが文字列が含まれている場合は、その後、プログラムの情報が印刷される文字列を指定し、[コマンド可能である場合アウト統計、-lは、プログラムやパラメータのフルネームを表示することができます
〜pidstat -w -t -C「ailaw➜ 」-l

あなたは、単一のマルチスレッドタスクを表示する場合一般的に作るために使用される場合は特に、よりpidstat psのより良い、そうです!

1.4
その他

あなただけでは、単一のCPUの状況を監視する必要がある場合、htopのに加えて、いくつかのホットスポットが存在する場合、スレッドは、コアを消費し、SMPのロードバランシングかどうか、各コアプロセッサ上での作業負荷を表示、Solarisでmpstatを使用することができます。
Solarisでmpstat -P ALL 1➜〜
あなたが直接トップ-uのtaozjユーザーのいずれかに他の無関係なプロセスをフィルタリングする方法を使用して、プロセスによって占有されたリソースを監視する場合は、次の方法も選択するために使用することができ、psコマンドは、印刷ニーズをカスタマイズすることができますエントリ情報:

しばらく:; PSの-eoユーザー、PID、NI、PRI、PCPU、PSR、COMMを行います| grepの 'ailawd'; 睡眠1; 完了

継承関係を明確にするために、次のパラメータは、より詳細なpstreeコマンドを表示し、より美しく、ツリー構造を表示するためのプロセスを使用することができる
➜〜PS axjf

第二に、ディスクIOクラス

iotopのは、視覚的にさまざまなプロセス、スレッドは、ディスクの読み取りリアルタイムレートを表示することができます。lsofをだけではなく、通常のファイルオープン情報(ユーザー)を表示することができ、あなたはまた、そのような時にパーティションが、その後はできないとして、は/ dev / sda1ににファイル情報を開くために、このような機器を操作することができますumountの時間は、あなたはlsofを通じディスクパーティションの状態を調べるために使用し、+ FGのパラメータも追加ファイルオープン旗マークを表示することができます追加することができます。

2.1
のiostat

➜〜iostatの-X-Z 1

:実際にかかわらず、IOSTAT -X-Z 1またはSARを使用することは、ディスクのための重要なパラメータである、1 -d
avgqu-S:デバイスI / O要求を単一のディスクのキューの平均長さへの送信、> 1の値のために、飽和装置を示す場合ディスクアレイの論理的な複数のディスクを除いて
、デバイスごとの待ち時間(ミリ秒)の平均I / O操作要求、キューサービスの時間に含まれる要求と:待つ(r_await、w_await)
へ:svctmデバイスI /平均サービス時間(ミリ秒)O要求、およびsvctmは非常に近い待つ場合は、ほとんどないI / Oに長い時間を待つために、良好なパフォーマンスのディスクを待つか、ディスクキューを示す、ディスクのレスポンスが悪い;
%utilの:機器使用方法は、第二のI / Oアカウンティングは、作業時間ことを示す場合に、単一のディスク%のutil>装置飽和したとき、それは100%に近い場合、(増加するのawaitに反映)パフォーマンスが低下する時間の60%しかし除くディスクアレイ論理ディスクの複数のために、

また、カーネルは一般的に、非同期技術の性能を改善するための読み取りと書き込みのキャッシングを利用するI / Oを使用し、監視対象のディスクのパフォーマンスが比較的貧弱であるが、必ずしもアプリケーションの応答に影響を与えませんが、しかし、上記の物理メモリを持つ任意の接続という限られた相が規制さ。
これらのパラメータの上に、ネットワーク・ファイル・システムは十分です。

第三に、ネットワーククラス

送信し、SAR -n DEV 1も同様のスループット情報を取得することができ、比較することにより、簡単で便利なリアリティカード、iptraf自明、直感的なツールの重要性のための高速情報ネットワーク・パフォーマンス・サーバーを受け、カードは最大を標準装備していますファストイーサネット、ギガビットイーサネットなどのレート情報、機器の使用率を確認することは容易です。
一般的に、伝送速度のカードには、ネットワークの開発最も懸念ではなく、むしろ特定のUDP、TCPコネクションのパケット損失率、再送率、およびネットワーク遅延やその他の情報のため。

3.1
のnetstat

➜〜netstatの-s
システム起動後ディスプレイ、各プロトコルの全体的なデータ情報。けれども豊富なパラメトリック情報は、ネットワークシステムの現在の状態に関する情報を得るために、またはその値の傾向を見て直感的な目を使用して違いを確認するのに便利ですが、二つの実験でない限り累積値。したがって、netstatコマンドは、ポートと接続情報を検出するために使用される:
netstatの-all(A)-numeric(N-)-TCP(T)-udp(U)-timers(O)-listening(L)-program(P)

-timersは、ディスプレイをスピードアップ、ドメイン名の逆引き参照をキャンセルすることができ、より一般的な存在

すべてのTCP接続➜〜netstatの-antp#リスト
〜netstatの-nltp#➜は、-aパラメータを追加していない、すべてのローカルTCPリスニングソケットを示しています

3.2
SAR

ここで-n使用SARツールが強すぎ、どのようなCPU、ディスク、結果的にチューブページスワッピングは、主に、さらにNFS、IP、ICMP、SOCKおよびその他を細分化するためにすべてのレベルでのネットワークが、ネットワークアクティビティを分析するために使用されますデータ型契約は、我々は唯一のTCPとUDPを気に。送信側と受信側の表示セグメントを除いて、次のコマンド、データグラム従来、更に含みます

TCP
➜TCP、ETCP -n sudoのSAR〜1。
tcpstat
アクティブ/ S: -など、Connect()の、CLOSEDからのTCP状態などによって局部的に開始されたTCP接続、>シンSENT
:リモートで開始されたTCP接続のようなパッシブ/ S > SYN-RCVD -によって(受け入れる)は、TCPからLISTEN状態
毎秒TCP再送回数、ネットワーク内の一般質の悪い、サーバーが過負荷になっているか、パケット損失、TCP確認応答に応じて:RETRANS /秒(tcpRetransSegs)再送は、再送動作を発生
/秒(tcpInErrs)isegerr(例えばチェックサム障害など)、受信したデータパケットあたりのエラー

UDP
➜UDP 1〜須藤のSAR -n。
noport / S(udpNoPorts):宛先ポートで指定されたアプリケーション・データ・パケットの数秒間に受信しなく
idgmerr /秒(udpInErrors):上記の理由により、本に加えこれは、分散データパケットの数を受信するがありません

もちろん、これらのデータは、ある程度のネットワークの信頼性を説明することができますが、シーンのみが意味を持つ特定のビジネス要件と組み合わせます。

3.3
のtcpdump

tcpdumpのは良いことであると言っています。我々は、すべてのローカルデバッグ時間がwiresharkのを使用することを好むことを知っているが、どのようにオンラインサーバーの問題にそれを取得しますか?

付録リファレンスアイデアを与える:キャプチャ用のtcpdumpを使用してリカバリ環境、問題を再現する場合(例えば、ログやステータス表示のように表示されます)キャプチャが終了し、かつ-Cに自身をtcpdumpのことができたときに/ -Wパラメータで、あなたが回転するので、全体的な数はまだ制御可能であるキャプチャパッケージは、データが自動的に保存された限界に達したときに、ファイルを保存するためにグラブ袋のサイズを制限することができます。パケットがラインを獲得した後、Wiresharkのと私はどのようにそれが幸せではない実際に見る方法を見てみたいです!何のGUIインターフェイスではなく、弱いキャプチャ機能はありませんが、tcpdumpをあなたはバッグとタイムスタンプとの完全なをつかむためにダウンし、その上のフィルタパラメータLAN、ホスト、ポート、プロトコルなどを指定することができますので、データパケット解析プログラムは、オンラインでありますそれはとてもシンプルにすることができます。

ここでは、小さなテストがあり、我々は、Webサーバが、これは、DSTポートパラメータを制限するので、3つの接続を確立し、そのサーバの応答パケットが除外され、そしてwiresharkのを開くために獲得し、SYNC、ACKが接続を確立開始したときに自動的に起動するようにChromeを見ることができますこのプロセスはまだ非常に明白です!tcpdumpのを使用する場合は、フィルタのクロールを構成することが可能必要が、その後の分析を容易にする一方で、カードの性能やシステムへの影響は、2つのtcpdumpの後にオープンしますので、オンラインビジネスのパフォーマンスに影響します。
tcpdump
紙仕上げ!

原作:taozj
オリジナル出典:https://taozj.org/201701/linux-performance-basic.html

ます。https://blog.51cto.com/10515219/2405348で再現

おすすめ

転載: blog.csdn.net/weixin_34281477/article/details/91656180