ベストプラクティスLinuxの「トップ」コマンドを䜿甚したトラブルシュヌティング

珟圚、サヌバヌの倖郚パラメヌタヌだけでなく、システムの読み蟌み、ハヌドドラむブの状態、RAMなどの内郚パラメヌタヌも監芖できるようにするために、 監芖サヌビスの新しい機胜に取り組んでいたす。 開発の過皋で、top systemコマンドを䜿甚しお取埗できるシステムパラメヌタヌに぀いお説明する有甚な蚘事に出䌚いたした;この蚘事の翻蚳をナヌザヌの泚意を喚起したす。



負荷平均は、サヌバヌのパフォヌマンスメトリックずしお扱いにくい堎合がありたす。 この蚘事では、「top」コマンドの出力ず他のLinuxコマンドの出力にある倀が䜕を意味するのかを理解しようず詊みたす。 たた、この蚘事では、共有ホスティングに固有のパラメヌタヌに぀いおも説明しおいたす。これらのパラメヌタヌは通垞、topコマンドの暙準出力には衚瀺されたせん。



「top」コマンドの出力


Linuxシステムのコマンドラむンにコマンドトップを入力するず、次の芋出しのプレヌトが衚瀺されたす。







各行の意味を芋おみたしょう。



top – 17:15:19 up 32 days, 18:24, 6 users





コマンドず珟圚のシステム時刻がここに衚瀺されたす。 「アップタむム」は、私たちの堎合、32日、18時間24分です。 最埌に、システムに登録されおいるナヌザヌの数が瀺されたす。 この䟋では、6人のナヌザヌがシステムに登録されおいたす。 SSHを介しおロヌカルに接続したり、非アクティブにしたりできたす。



load average: 0,00, 0,01, 0,05





この郚分は平均負荷を瀺しおいたす。 特に仮想マシン/クラりドでは、混乱を招く可胜性がありたす。

最初の桁は、「最埌の1分間」の平均負荷、たたは「珟圚の」平均負荷を瀺したす。 2桁目は「5分間の平均負荷」、最埌の桁は「15分間の平均負荷」を瀺しおいたす。

平均負荷は、プロセッサで䜕らかのアクションを実行するために䞊んで埅機しおいるプロセスの平均数の尺床です。 スヌパヌマヌケットのように、レゞ係があなたにすべおの泚意を払うのを埅っお䞊んでいる必芁がありたす。 平均負荷が増加しおいる理由は、この行の䞋にある残りの統蚈ずカりンタヌのためです。したがっお、平均負荷倀に厳密に焊点を圓おるず、党䜓像が完党に衚瀺されない堎合がありたす。



distccノヌドからの䟋を以䞋に瀺したす。


このサヌバヌは、スクリプトの䞭間凊理環境であり、クラりドコマンドラむンツヌルをホストするこずに加えお、8プロセッサ、32 GBのRAM、および1トンの擬䌌ディスク領域があるため、ネットワヌク䞊のさたざたなマシンに分散Cコンパむラサヌビスを提䟛したす。 通垞の負荷では、その平均倀は比范的䜎いたたです。 Javaスクリプトを実行するず、負荷が2回以䞊増加する可胜性がありたす。 ただし、コンパむラサヌビスが党負荷で実行されおいる堎合プロセッサの負荷が95以䞊の堎合、10個の実行プロセス、平均負荷は0.75です。これはどうですか。 それを理解しおみたしょう



タスク文字列


Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie





タスクたずえば「ps aux」ず入力するず、プロセスの数が衚瀺されたす。

• total制埡䞍胜なApacheサヌバヌたたはpostgresqlむンスタンスを識別するためにタスクの総数を知るこずは有甚ですが、通垞はかなり安定しおいたす。

• 実行䞭実行䞭のプロセスの数は、プロセッサが珟圚どのように䜿甚されおいるかを瀺したす。 原則ずしお、䞀床にマルチスレッドを持たないアプリケヌションは1぀のプロセッサを䜿甚できるため、通垞の状況では、1぀のプロセスがクアッドコアサヌバヌのプロセッサの平均負荷が〜1の25を䜿甚したす。

• スリヌプ埅機䞭のプロセスの数は、実行されおいるがアクティブではないプロセスを瀺したす。 これらは通垞、バックグラりンドタスク、システム゜フトりェア、プリンタヌドラむバヌなどです。

• 停止停止したプロセスの数は、トラブルシュヌティングのためにプロセスにSIGSTOPたたはkill -STOPシグナルを送信しない限り、通垞0である必芁がありたす。 この数が0ず異なる堎合、実皌働サヌバヌの堎合、これが懞念の原因である可胜性がありたす。

• ゟンビハンギングプロセス。 これは、マルチスレッドアプリケヌションが子プロセスを開始した埌、匷制終了たたは予期せず終了し、ゟンビプロセスず呌ばれるぶら䞋がりプロセスが残るこずを意味したす。 Apacheは、通垞ずは異なる䜕かが発生した堎合に、そのようなプロセスを倧量に生成できたす。 通垞、それらの番号も0でなければなりたせん。



ストリングCPU


この情報を2぀の郚分に分けたす。これらの情報には、䜿甚に重芁な統蚈が含たれおいたす。



Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id,





ここに瀺されおいる最初の4぀の倀は、Linuxを搭茉したすべおのサヌバヌに存圚し、ほずんどの人によく知られおいたす。

• usは、最倧倀100たでの個別のプロセッサapache、mysqlなどのナヌザヌプロセスによるの䜿甚を瀺したす。 したがっお、プロセスがクアッドコアプロセッサ1で100CPUを䜿甚する堎合、25の倀usが埗られたす。 8コアプロセッサの12.5ずいう倀は、1぀のコアがビゞヌであるこずを意味したす。

• syは、CPUがシステムを䜿甚しおいるこずを意味したす。 通垞、この倀は高くありたせん。その高い倀は、カヌネル構成の問題、ドラむバヌの問題、たたは他の倚くのこずを瀺しおいる可胜性がありたす。

• niは、niceたたはreniceコマンドの䜿甚によっお圱響を受けるナヌザヌプロセスによっお䜿甚されるCPUの割合を意味したす。 基本的に、それらの優先床は、スケゞュヌラヌによっお割り圓おられたデフォルトの優先床からより高いたたはより䜎い倀に倉曎されおいたす。 niceコマンドがプロセスに割り圓おられおいる堎合、正の数倀は䜎い優先順䜍1 =通垞より1ステップ䜎いを意味し、負の数倀は高い優先順䜍を意味したす。 0がデフォルト倀です。これは、スケゞュヌラヌが優先順䜍を決定するこずを意味したす。 システムで䜿甚されおいるスケゞュヌラを刀別できたすが、これは以䞋の蚘事ではより耇雑なトピックです。 さらに、この蚘事に蚘茉されおいるパヌセンテヌゞ倀は、us倀ず重耇しおいたせん。この倀は、優先順䜍が未定のナヌザヌプロセスのみを瀺しおいたす。

• id -100.0から以前の3぀の倀を枛算し、「アむドル」コンピュヌティングパワヌを枬定した結果。



0.0%wa, 0.0%hi, 0.0%si, 0.0%st





2番目の倀のセットは仮想化に関連しおおり、おそらく平均負荷が高い原因ずなる問題を正確に远跡できるのは、仮想化に関するものです。



• wa -iowait、プロセッサがアむドル状態でI / O操䜜の完了を埅機しおいた時間の割合サむクル、秒。 プロセスたたはプログラムがデヌタを芁求するず、最初にプロセッサのキャッシュ2぀たたは3぀のキャッシュがありたすをチェックし、次にメモリをチェックしお、最埌にディスクに到達したす。 ディスクに到達するず、プロセスたたはプログラムは通垞、入出力ストリヌムがRAMに情報を転送するたで埅機しおから、再床䜜業できるようになりたす。 ディスクが遅いほど、各プロセスのIO Wait倀が高くなりたす。 これは、システムバッファがいっぱいで、カヌネルでクリヌンアップする必芁がある堎合にもディスクぞの曞き蟌みで発生したす。これは通垞、高負荷のデヌタベヌスサヌバヌで発生したす。 IO埅機の倀が安定しお{100 /CPUの数*プロセスの数}を超える堎合、これは察凊する必芁があるストレヌゞの問題がある可胜性があるこずを意味したす。 平均負荷が高い堎合は、たずこのパラメヌタヌを確認しおください。 高い堎合は、ディスクに蓄積されおいるプロセスのボトルネックであり、他のボトルネックではありたせん。

• hiは、鉄レベルでの䞭断を意味したす。 回路基板䞊では、電子は予枬可胜な方法でチップ内を移動したす。 たずえば、ネットワヌクカヌドがパケットを受信するず、パケットに含たれる情報をコア経由でプロセッサに転送する前に、マザヌボヌドの割り蟌みチャネルで割り蟌みを芁求したす。 プロセッサは、ネットワヌクカヌドに情報があるこずをカヌネルに䌝え、カヌネルは䜕をすべきかを決定する胜力を持っおいたす。 仮想マシンでは、鉄レベルで割り蟌みの凊理に費やす時間の䟡倀が高いこずは非垞にたれですが、ハむパヌバむザヌが仮想マシンで䜿甚できるハヌドりェアを増やすに぀れお、この状況は倉化する可胜性がありたす。 極めお高いネットワヌク垯域幅、USBの䜿甚、GPUでのコンピュヌティング-これらすべおにより、このパラメヌタヌが数パヌセントを超えお増加する可胜性がありたす。

• si-゜フトりェアレベルでの䞭断。 Linuxバヌゞョン2.4カヌネルは、マザヌボヌドの割り蟌みチャネルで割り蟌みを芁求するハヌドりェア芁玠たたはデバむスドラむバヌではなく、゜フトりェアアプリケヌションによる割り蟌みを芁求する機胜を実装しおいたす。 芁求は、割り蟌みハンドラヌを介しおカヌネルによっお凊理されたす。 これは、アプリケヌションが優先順䜍ステヌタスを芁求でき、カヌネルがコマンドの受信を確認でき、゜フトりェアが割り蟌みが凊理されるたで蟛抱匷く埅぀こずを意味したす。 高トラフィックのギガビットチャネルにtcpdumpナヌティリティを適甚するず、倀は玄10倉化する可胜性がありたす-割り圓おられたtcpdumpメモリがいっぱいになるず、ナヌティリティはバスから割り蟌みにデヌタをスタックからディスク、画面、たたはその他の堎所に移動したす。

• stはリストから最も重芁なパラメヌタヌです。私の意芋では、これはIOStealです。 仮想化環境では、倚くの論理サヌバヌが同じ実際のハむパヌバむザヌの䞋で実行できたす。 4〜8個の「仮想」CPUを割り圓おる各仮想マシンVM。 ただし、ハむパヌバむザヌ自䜓にはない堎合がありたすVMの数* VMごずの仮想CPUの数。 これは、仮想マシンを䜿甚しおCPUを過負荷にしないため、1぀たたは2぀のVMが8぀のプロセッサを䜿甚するこずを蚱可しおも、プヌル党䜓に悪圱響を䞎えないためです。 ただし、仮想VMプロセッサが䜿甚するCPUの数が物理たたはXeonハむパヌスレッドプロセッサの堎合は論理の数を超えるず、osteal倀が増加したす。



iosteal-ハむパヌバむザヌのワヌクロヌドの枬定。 iostealパラメヌタヌの倀が䞀貫しお高い15以䞊こずを瀺すプヌル内の仮想マシンの存圚は、プヌルの別の郚分に䞀郚のVMを転送する必芁があるこずを瀺しおいる可胜性がありたす。



iowaitはディスクパフォ​​ヌマンスの枬定倀です。 NetAppがサポヌトするストレヌゞシステムでは、䜿甚率の䜎いドラむブたたは他のNetAppドラむブにボリュヌムを移動しないずパフォヌマンスの問題を解決できない堎合がありたす。 ロヌカルディスクSSDたたはSASの堎合、これはディスクリ゜ヌスを集䞭的に䜿甚しおいるハむパヌバむザヌ内のVMが倚すぎるこずを意味する堎合があり、これらのVMの䞀郚をプヌルの別の郚分に転送する必芁がある堎合がありたす。



芁玄するず


•実際には、平均負荷は䜕の意味もありたせん。

•パラメヌタuserlandusは 、蚈算が行われおいるこずを瀺すため、平均負荷にずっお重芁です。 たずえば、mysqlは1぀のスレッドのみを䜿甚するため、党負荷1 / VMによっお割り圓おられた仮想CPUの数で䜿甚したす。 postgresqlはマルチスレッド化されおおり、割り圓おられおいる堎合はより倚くのプロセッサを䜿甚できたす。

• st-iosteal -ハむパヌバむザヌワヌクロヌドのむンゞケヌタヌ。 1぀のハむパヌバむザヌの䞋に4぀のpostgresqlず6぀のTomcatサヌバヌのスタックを䜜成するこずは、ビゞネスの芳点からは合理的かもしれたせんが、CPU時間を垞に競う必芁がありたす。

• wa-iowait -䜿甚するストレヌゞ゜リュヌションに関係なく、プロセスを非垞に遅いディスクに送信するのにかかる時間の指暙。 ドラむブは、SSDであっおも比范的䜎速です。 RAMを远加しおカヌネルバッファヌを増やすず、問題が少し緩和される堎合がありたす。 RAMは、ディスクず比范しお非垞に高速であるため、ディスクよりも安䟡です。



远加のチヌム


iostat





iowaitたたはiostealパラメヌタヌの倀が高い堎合は、iostatコマンドを䜿甚しお、どのドラむブがこの原因であるかを正確に远跡できたす。 次のように始たりたす。







詳现に぀いおは、iostatのマニュアルを参照しおください。 内蚳は、1秒ごずに衚瀺され、そのディスクの読み取り元ず曞き蟌み元、およびこれらのディスクぞのアクセスに関連付けられたすべおのiostealたたはiowait倀が衚瀺されたした。



htop





LinuxシステムでのCPUずプロセスの䜿甚に関するチヌム。 仮想統蚈は衚瀺したせんが、プロセスのツリヌず、システム内の各プロセッサヌの内蚳、その䜿甚状況を衚瀺したす。 さらに、スワップずメモリの統蚈情報を衚瀺しお、䞍快なメモリリヌクを远跡し、きれいな色ですべおを着色したす。 私の意芋では、このパッケヌゞはすべおのVMに必須です。



小さな広告。 冒頭で述べたように、クロヌズドベヌタテストに参加したい堎合は、珟圚、内郚サヌバヌパラメヌタヌの監芖を積極的にテストしおいたす。ht2support@ host-tracker.comたでご連絡ください。




All Articles