Linuxのロードアベレージ負荷問題の詳しい解説
この記事では、Linux のロードアベレージ負荷問題について詳しく説明します。一定の参考値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
ある面接で、面接官が「CPU 使用率は高くないのに、負荷 (平均負荷) が非常に高いです。問題をどのように見つけますか?」という質問をしました。
当時は Load の意味を理解していませんでしたが、面接官は、この指標は中断されない状態にあるプロセスが多いことを反映していると説明しました。私の過去のバックエンド開発の経験に基づいて、私は、システム内でより多くの IO ブロックがある可能性があると答えました。これは主にネットワーク IO の問題で発生します。コマンド netstat -tnp を使用して、TCP 接続に time_wait ステータスが多いかどうかを確認してください。 ..
わかっています 私の答えは非常に一方的だったので、後で見直してメモを取りました。
負荷平均とは
Linux に詳しい人は、top uptime コマンドを使用して負荷平均インジケーターを表示できることを知っています。
Use man uptime to view Load Average 説明:
システム負荷平均は、実行可能または中断不可能な状態にあるプロセスの平均数です。実行可能状態のプロセスは、 CPU、または CPU の使用を待機しています。中断不可能な状態のプロセスは、ディスクの待機など、何らかの I/O アクセスを待機しています。平均は 3 つの時間間隔にわたって取得されます。負荷平均は、システム内の CPU の数に対して正規化されていません。したがって、負荷平均 1 は、単一 CPU システムでは常に負荷がかかっていることを意味しますが、4 CPU システムでは、75% の時間アイドル状態であることを意味します。
重要な点を理解してください。平均負荷とは、次のものを指します。一定期間内に、システム内で実行可能状態および中断不可能な状態にあるプロセスの平均数を、平均アクティブプロセス数と呼びます。 CPU 使用率とは直接関係がないことに注意してください。
この記事で説明されているように、コマンド ps aux を使用してプロセスのステータス stat を表示します:
R ステータス、実行可能ステータス(実行ステータス) / 実行可能)、CPU を使用しているか CPU を待機しているプロセスの D 状態、中断不可能な状態 (無中断スリープ、ディスク スリープとも呼ばれます)、カーネルの重要なプロセスにあるプロセス状態であり、中断されません。
D なぜ状態を中断できないのでしょうか? たとえば、システムはデータの整合性を確保するために、ディスク デバイスがデータを返す前にハードウェア デバイスの I/O 応答を呼び出します。他のプロセスを中断する、または中断される 中断されると、ディスクデータとプロセスデータの間に不整合が発生しやすくなります。したがって、中断不可能 (D) 状態は、プロセスとハードウェア デバイスに対するシステムの保護メカニズムです。
アクティブなプロセスの平均数は、厳密に言えば、アクティブなプロセスの数の指数関数的な減衰平均です (特定の量の減少率はその値に比例します)。通常、単位時間当たりのアクティブなプロセスの数として理解できます。
CPU 使用率と負荷分散
CPU の観点から見ると、負荷平均は単位時間あたりの CPU を占有するプロセスの数のみを反映し、CPU 使用率はプロセスの数に直接関係しません。コマンド top vmstat を使用して CPU 使用率を確認できます。次のインジケーターがあります:
%us: ユーザー空間プログラムの CPU 使用率を示します (nice を通じてスケジュールされていません) %sy: CPU 使用率を示しますシステム空間の主にカーネルプログラム。 %ni: ユーザー空間内のプログラムと、nice によってスケジュールされたプログラムの CPU 使用率を示します。 %id: アイドル状態の CPU %wa: 実行中に CPU が IO を待機している時間 %hi: CPU によって処理されたハード割り込みの数 %si: CPU によって処理されたソフト割り込みの数 %st: 仮想マシンによって盗まれた CPU machine
適切な平均負荷を測定する方法
一般的に、負荷平均が CPU の数よりも低い場合、マシンのパフォーマンスはサービス要件を満たしています。それを超えているかどうかは問題ではありません。負荷平均は CPU 使用率を直接表すものではなく、IO ブロックの増加が原因である可能性があります。負荷平均が CPU 数の 70% を超えると、プロセスの応答が遅くなり、サービスの通常の機能に影響を与える可能性があります。
歴史的変化の観点から
一般的に、最高稼働時間は、1分、5分、15分の3つの時点での負荷平均指標を提供します。これは、システムの最近の状態変化の傾向を反映しています。実際の本番環境では、長期にわたる監視記録を作成する必要があります。平均負荷が CPU の 2 倍になるなど、異常な数値変化がある場合は、問題を分析して調査する必要があります。
2 種類の指標間の違いの包括的な分析
はバランスのとれた負荷と CPU 使用率に基づいており、次の考えられる状況が組み合わされます。
負荷平均は高、CPU 使用率が高い場合は、CPU を大量に使用するプロセス (スレッド) が実行されているか、CPU のスケジュールを待機しているプロセス (スレッド) が多数あります。負荷平均が高く、CPU 使用率が低い場合、IO -集中的なプロセスが実行されています。どちらも比較的低く、通常の負荷平均は低いです。CPU 使用率が高く、これは存在しません
シミュレーション ケースとツール
さまざまな組み合わせでケースを分析するにはどうすればよいですか?これら 2 つの指標、バランスされた負荷と CPU 使用率のうち、指標の変化の原因を見つけますか?
次の環境は Linux Arch 4.19 / 4 CPU / 8G メモリです。
ツール リスト
ストレス システム ストレス テスト ツール
sysstat パフォーマンス分析ツール パッケージ:
mpstat マルチコア CPU 解析パフォーマンス ツール、mp はマルチプロセッサ (マルチプロセッサ) を意味します。 pidstat プロセス パフォーマンス解析ツール、pid はプロセス ID を意味します。これは、プロセスの CPU、メモリ、I/O、およびコンテキスト切り替えインジケーターを表示するために使用されます
シミュレーション シナリオ
ストレスを使用すると、次のシナリオをシミュレートできます
CPU 負荷が高いプロセス
# 模拟一个进程, 对 cpu 使用率 100%,限时 600s stress --cpu 1 --timeout 600
IO 集中型プロセス
stress -i オプション、sync() で回転する N 個のワーカーを生成
# 模拟一个进程不停的执行 sync stress -i 1 --timeout 600
# 模拟16个进程, 对 cpu 使用率 100%,限时 600s stress --cpu 16 --timeout 600
ツール インジケータ
mpstat -P ALL 5 は、すべての CPU を監視し、5 秒ごとに一連のデータを出力します。インジケーター %usr 使用率と %iowait IO ブロック時間に注意してください。これから、それが次のとおりであるかどうかを判断できます。 CPU 集中型または IO 集中型 pidstat - u 5 1 5 秒間隔の統計、CPU を使用したプロセスのデータ、指標 %usr 使用率、CPU 使用の %wait 待機時間に注意してください。これから判断できます。プロセス (スレッド) が多すぎるかどうか
#
以上がLinuxのロードアベレージ負荷問題の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

VSコード拡張機能のインストールの理由は、ネットワークの不安定性、許可不足、システム互換性の問題、VSコードバージョンが古すぎる、ウイルス対策ソフトウェアまたはファイアウォール干渉です。ネットワーク接続、許可、ログファイル、およびコードの更新、セキュリティソフトウェアの無効化、およびコードまたはコンピューターの再起動を確認することにより、問題を徐々にトラブルシューティングと解決できます。

gitリポジトリアドレスを表示するには、次の手順を実行します。1。コマンドラインを開き、リポジトリディレクトリに移動します。 2。「git remote -v」コマンドを実行します。 3.出力と対応するアドレスでリポジトリ名を表示します。

VSコードはMacで利用できます。強力な拡張機能、GIT統合、ターミナル、デバッガーがあり、豊富なセットアップオプションも提供しています。ただし、特に大規模なプロジェクトまたは非常に専門的な開発の場合、コードと機能的な制限がある場合があります。

Visual Studio Code(VSCODE)は、Microsoftが開発したクロスプラットフォーム、オープンソース、および無料のコードエディターです。軽量、スケーラビリティ、および幅広いプログラミング言語のサポートで知られています。 VSCODEをインストールするには、公式Webサイトにアクセスして、インストーラーをダウンロードして実行してください。 VSCODEを使用する場合、新しいプロジェクトを作成し、コードを編集し、コードをデバッグし、プロジェクトをナビゲートし、VSCODEを展開し、設定を管理できます。 VSCODEは、Windows、MacOS、Linuxで利用でき、複数のプログラミング言語をサポートし、マーケットプレイスを通じてさまざまな拡張機能を提供します。その利点には、軽量、スケーラビリティ、広範な言語サポート、豊富な機能とバージョンが含まれます

VSCODEビルトインターミナルは、エディター内でコマンドとスクリプトを実行して開発プロセスを簡素化できるようにする開発ツールです。 VSCODE端子の使用方法:ショートカットキー(CTRL/CMD)で端子を開きます。コマンドを入力するか、スクリプトを実行します。 Hotkeys(Ctrl Lなどの端子をクリアするなど)を使用します。作業ディレクトリ(CDコマンドなど)を変更します。高度な機能には、デバッグモード、自動コードスニペット完了、およびインタラクティブコマンド履歴が含まれます。
