システム負荷をマスターする:負荷平均を読み取って解釈する方法
2024 年 2 月 25 日に更新され、スクリーンショットの例と古いリンクが更新されました。
システムの負荷を監視することは、アプリをスムーズに実行し続けるために不可欠です。 AppSignal のホスト メトリクスは、 システムの負荷平均に関する洞察を提供します。 、複数の時間枠にわたってシステムにどれだけの負荷がかかっているかを示します。 top などのツールを使用してこのメトリクスを確認することもできます。 、uptime 、および w :
しかし、「負荷平均」とは正確には何を意味し、これらの数値をどのように解釈すればよいのでしょうか?この投稿では、システム負荷を分析し、負荷平均の見方を説明し、負荷平均を効果的に監視する方法を示します。
負荷平均とは何ですか?
負荷平均は通常、uptime の例のように 3 つの数値として表示されます。 上。結果の末尾にある 3 つの数字は、直前の 1 分間の平均負荷 (0.44) を示します。 )、過去 5 分間 (0.28) )、および最後の 15 (0.25) ).

AppSignal では、過去 12 時間の負荷平均は分単位で表示され、それより長い期間では 1 時間単位で表示されます。 Time Detective を使用すると、いつでもより深く掘り下げることができ、ホスト メトリクス ダッシュボードを使用してリアルタイムでホストを比較できます。
システム負荷
これらの負荷平均が何を示しているのか (そしていつ警告すべきか) を理解するには、 まずシステム負荷を理解する必要があります。 意味とその測定方法。
システム負荷は基本的に、常にアクティブなプロセスの数です。
- アイドル時の負荷は0です。 .
- プロセスが開始されると、負荷は 1 増加します。 .
- プロセスが完了すると、負荷が 1 減少します。 .
負荷には、CPU 時間を待機しているプロセスも含まれます。したがって、1 つのプロセスが CPU をアクティブに使用し、他の 2 つのプロセスがキューに入れられている場合、負荷は 3 になります。 .
プロセスの有効期間が短いため、負荷は急速に変動し、0 から急激に変化する可能性があります。 5 まで ミリ秒単位で、同じ速度でドロップバックします。この変動性のため、時間の経過に伴う平均負荷を確認すると、システムがどの程度ビジーであるかをより明確に把握できるため、より有益です。
負荷平均
システム負荷がどのようにカウントされるかがわかったので、負荷平均を見てみましょう。これまで見てきたように、システムにかかる負荷は通常、時間の経過に伴う平均として表示されます。
一般に、シングルコア CPU は一度に 1 つのプロセスを処理できます。平均負荷 1.0 は、1 つのコアが 100% の時間ビジーであることを意味します。負荷平均が 0.5 に低下した場合、CPU は時間の 50% にわたってアイドル状態になっています。
負荷平均が 1.5 に上昇した場合、CPU は常にビジー状態であり、(平均して) 時間の 50% を待機している他のプロセスが 1 つあり、CPU に処理できる量を超える作業が与えられています。
論理プロセッサ
一般的な経験則として、負荷平均はマシンのプロセッサ数を超えるべきではありません。プロセッサの数が 4 つの場合、負荷は通常 4.0 未満にとどまります。
これは論理プロセッサに関連していることに注意してください。 CPU 上の実際の物理的なものの代わりに。ハイパー スレッディングなどのソフトウェア抽象化により、論理プロセッサまたは処理スレッドの数が物理プロセッサ コアの数よりも多くなる場合があります。
Linux 上の論理プロセッサの数を確認するには、/proc/cpuinfo にリストされているプロセッサを数えます。 、または次を使用します:
これにより、プロセッサ行数が自動的に出力されます。 Mac では、sysctl と尋ねることができます。 以下を使用して、論理プロセッサの数を直接取得します。
複数の論理プロセッサを備えたシステムの場合、より多くのプロセスを同時に実行できるため、負荷平均が高くなる可能性があります。 2 つの CPU コアを備えたマシンで、負荷平均 2.0 は、両方の CPU が 100% 使用され、平均して 2 つのプロセスがアクティブであることを意味します。
👋 Ruby パフォーマンス監視チェックリストの他の Ruby (on Rails) パフォーマンス記事をご覧ください。
負荷平均の読み取り
これはプロセスの絶対数の平均であるため、適切な負荷平均とは何か、またいつ警告すべきかを判断するのは難しいように思えるかもしれません。一般に、各 CPU コアは一度に 1 つのプロセスを処理できるため、論理プロセッサあたりの速度が 1.0 を超えるまでシステムが過負荷になることはありません。デュアルコア システム (ハイパー スレッディングなし) では、これは 2.0 になります。
通常、直前の 1 分間の負荷平均がコアあたり 1.0 を超えていれば問題ありませんが、5 分または 15 分間の平均で負荷が上昇している場合は、問題があることを示している可能性があります。
AppSignal でホストを監視する
負荷平均を理解することは、アプリを健全に保つための鍵です。 AppSignal は、エラー追跡、異常検出、ログ管理などの機能を備えており、問題が発生する前に問題を発見するのに役立ちます。
強力な洞察とスマートなアラートでアプリを監視したいですか? 30 日間の無料トライアルを開始してください。クレジット カードは必要ありません。
ご質問やフィードバックがありますか?お知らせください。当社の専門家がモニタリングに関するご質問にお答えします。
-
RailsアプリケーションでOmniAuth-Twitterを使用する方法
このチュートリアルでは、アプリケーションのユーザーがTwitterアカウントを使用してログインできるようにする方法を学習します。これを行うには、OAuthなどのツールを使用すると簡単になります。 OmniAuthのTwitter戦略を含むOmniAuth-Twitterを利用します。 飛び込みましょう! はじめに Railsアプリケーションを生成することから始めます。ターミナルから、コマンドを実行して実行します。 rails new Tuts-Social -T Gemfileを開き、ブートストラップgemを追加します。 #Gemfile...gem bootstra
-
Rubyのケースステートメントの多くの用途
if / elsifを使用する必要があるときはいつでも 代わりにRubyのcaseステートメントを使用することを検討できるステートメント。この投稿では、いくつかの異なるユースケースと、それが実際に内部でどのように機能するかを学びます。 注:他のプログラミング言語では、これはスイッチとして知られています。 ステートメント。 Rubyのcaseステートメントのコンポーネント: キーワード 説明 ケース ケースステートメントの定義を開始します。使用する変数を取得します。 いつ 一致する可能性のあるすべての条件は1つのwhenステートメントです。 その他 一致