サーバーのCPU使用率を監視する方法と理由
アプリケーションを使用しているときは、高速にしたいです。 高速アプリケーションは私を幸せにします。 そして、私はそれが皆と同じだと確信しています。 インターネットで動作するアプリケーションを所有している場合は、サーバーのパフォーマンスに焦点を当てることが不可欠です。 パフォーマンスの良いサーバーを持つためには、世話をすることがたくさんあります。 しかし、何かを改善するためには、それがどこにあるのかを知る必要があります。 したがって、サーバーを監視することは、サーバーのパフォーマンスを向上させるための最初のステップです。
サーバーのパフォーマンスを理解するために何を監視するかについて話すとき、出てくる可能性のある多くのメトリックがあります。 この記事では、サーバーのCPU使用率に焦点を当てます。 まず、サーバーのCPU使用率を説明し、その理由と監視方法について説明します。
サーバーのCPU使用率はどういう意味ですか?
サーバー上で起こることはすべてシステムのタスクです。 このタスクは、サーバーによって実行されるプロセスに分類されます。 プロセスはさまざまな複雑さがあり、完了する速度が異なります。 これに基づいて、CPUはプロセスを実行するのに時間がかかります。 換言すれば、CPUは、プロセスを実行するために使用されています。 CPU使用率は、CPUがタスクを完了するために使用されている時間の割合です。
Idle
CPUがアイドル状態のとき、CPUは何もしていません。 タスクが割り当てられるのを待っているだけです。 単一のプロセッサシステムを使用している場合、CPUがアイドル状態になる可能性は非常に低いです。 アプリケーションを実行していない、または何もしていない場合でも、CPUはオペレーティングシステムのタスクを実行するために使用されます。 しかし、システムに複数のプロセッサがある場合は、そのうちの1つまたはいくつかがアイドル状態になる可能性があります。 これは、1つまたは少数のプロセッサのみが使用されており、他のプロセッサは何の関係もないためです。
Busy
アイドル状態の反対は、CPUがプロセスの実行に使用されているときのbusy状態です。 CPUは、さまざまな種類のタスクを担当します。 タスクを実行するプロセスの間に、CPUは四つのことを行います:
- Fetch:タスクを完了するための命令はメモリに格納されます。 CPUは、何をすべきかを理解するために、メモリからこれらの命令を取得する必要があります。
- Decode:CPU用の命令は、プログラムなどの異なる形式にすることができます。 たとえば、C、Java、またはPythonでプログラムを作成したとします。 Cpuは、これらのコーディング言語を直接理解することはできません。 それはそれを理解できる形に解読しなければなりません。
- : これは、CPUが実際にタスクを実行しているときです。
- ストレージ:CPUがタスクを完了すると、タスクに関するフィードバックを与える必要があります。 タスク実行後の結果はメモリに格納されます。
I/O操作
これは、CPUが完全にアイドル状態ではなく、ビジー状態でもない状態です。 プロセスの実行中に、CPUは別のコンポーネントまたはプロセスにデータを出力する必要がある場合があります。 または、CPUが別のプロセスまたはコンポーネントからデータを取得するのを待つ必要がある場合があります。 その場合、タスクの実行を再開できるように、I/O操作が完了するのを待っています。
CPU使用率は、非アイドル状態のCPUの尺度です。 CPU使用率はパーセンテージで測定されますが、CPU使用率の値が100%より大きいことがわかります。 これは、CPUが過負荷になっていることを意味するものではありません。 たとえば、マルチプロセッサシステムでは、CPU使用率が100%を超えていることがわかります。 システムのCPU使用率の値は、個々のCpuのCPU使用率の合計です。 したがって、2つのプロセッサがあり、そのうちの1つのCPU使用率が60%で、もう1つのCPU使用率が50%の場合、合計CPU使用率の値は110%になります。
CPU使用率が高い原因は何ですか?
問題の核心を見つけることは、高いCPU使用率のためのより良い解決策を実装するのに役立ちます。 使用例に基づいて、CPU使用率にはさまざまな理由があります。 私は最も一般的な原因を列挙しています。
CPU要件の高いプロセス
一部のプログラムではCPUリソースが高い必要があります。 あなたが低仕様のシステムを持っていて、ハイエンドのビデオゲームを実行しようとしているならば、明らかにCPU使用率は屋根を通過します。 同様に、動作するために高いCPUリソースを必要とする異なるプロセスが存在する可能性があります。 このようなプロセスまたは小計として高いCPUを利用する多数のプロセスが原因の一つであり得る。 サーバー上で、複数のサービスを実行してサーバーを実行し続ける、シミュレーションなど。、高いCPU使用率を引き起こす可能性があります。
バックグラウンドプロセス
プロセスは、主にシステムプロセスとアプリケーションプロセスの2つのカテゴリに分けることができます。 システムプロセスは、システムの実行を維持するために必要とされるプロセスです。 アプリケーションプロセスは、特定の目的のために使用するプロセスです。 これらのプロセスがバックグラウンドで実行され続けると、CPUリソースが消費されます。
アプリケーションウィンドウを閉じた後も、多くのアプリケーションプロセスがバックグラウンドで実行され続けます。 サーバーは通常、必要なプロセスのみを持つように定期的に保守およびクリーニングされますが、それでも可能であるため、これはサーバー上で発生する可能
マルウェア
マルウェア(悪意のあるソフトウェア)は、悪意のあるアクターがシステムを攻撃したり、システム上で不正な操作を実行したりするために使 当初、マルウェアは高いCPUリソースを使用して隠されたままにすることはありませんが、悪意のある操作を実行し始めると、CPU使用率が高くなります。 私はマルウェアが一週間前にサーバーに誘導されていたこの事件を目撃し、ある日、サーバーからクラウドストレージにすべての機密データを転送し始めました。 それは物事を設定し、重要なデータを見つけるされている間に、このマルウェアは、多くのCPUリソースを使用していませんでした。 しかし、必要なものがすべて見つかると、データ転送のためにCPU使用率が大幅に急上昇しました。
最適化されていないコード
特定のタスクのためにサーバー上でカスタムコードを実行するのが一般的です。 このようなコードが最適化されていない場合、多くのCPUリソースを使用する可能性があります。 最適化されていないループと再帰は、最適化されていないコードによるCPU使用率の高い最も一般的な原因の一部です。
Cpu使用率が高いための一般的な修正
以前に対処した一般的な原因に基づいて、CPU使用率が高いための一般的な修正のいくつかを見てみましょう。
再起動
システムの再起動は、ほとんどのコンピュータの問題の解決策です。 それはどのようにCPU使用率を減らすのに役立ちますか? 再起動すると、何らかのアクションのために開始された可能性のあるすべてのバックグラウンドプロセスが閉じられますが、必要はありません。 また、ゾンビプロセスや誤動作のために無期限に実行されている他のプロセスを終了します。 したがって、システムを再起動すると、不要なプロセスのすべて(少なくともほとんど)がきれいになり、CPU使用率が削減されます。
エンドバックグラウンドプロセス
システムの再起動は、特にサーバーでは実現できない可能性があります。 したがって、システムを再起動せずに不要なプロセスを処理する必要があります。 これを行うには、実行中のすべてのプロセスを一覧表示し、不要なプロセスを特定して終了することができます。 これは、windowsのタスクマネージャでどのように見えるかです:
別の修正は、起動プロセスに対処することです。 システムが起動するとすぐに起動するように構成されているプロセスがいくつかあります。 これらのうちのいくつかは必要であり、いくつかはそうではありません。 このようなプロセスを識別し、自動起動を無効にすることができます。 Windowsでは、タスクマネージャの”スタートアップ”タブの下にそれらを見つけることができます:
マルウェア対策
マルウェアは危険です。 CPU使用率の面でだけでなく、一般的にも。 いくつかのマルウェアは、高いCPU使用率を引き起こし、アンチマルウェアを使用すると、このようなマルウェア 現代のマルウェア対策ソフトウェアは、スマートで高度です。 彼らはあなたのシステム内のマルウェアを識別し、それらを削除または検疫するだけでなく、マルウェアがシステムに侵入するのを防ぐこともで したがって、マルウェア対策を使用することで、高いCPU使用率を修正するだけでなく、マルウェアによる高いCPU使用率を防止することができます。
コードの最適化
CPU使用率が高い理由が最適化されていないコードによるものであることを特定した場合は、それを最適化する必要があります。 コードを分析し、コードのどの部分がCPUリソースを消費しているかを調べて最適化する必要があります。
CPU Upgrade
他のすべての問題を修正し、すべてを最適化してもCPU使用率が高い場合は、CPU要件が高いことを意味します。 このような場合は、CPUリソースをアップグレードする以外のオプションはありません。
なぜサーバーのCPU使用率を監視する必要があるのですか?
サーバーは、ユーザーからのジョブとシステム内のジョブの二つのタイプのジョブを高レベルで完了することができます。 ユーザーからのジョブは、ユーザーがサーバーからサービスまたはデータを要求したときです。 YouTubeに行って何かを検索したとしましょう。 YouTubeのサーバーは、検索に関連するすべての動画を取得し、リクエストへの応答として送信する必要があります。 このデータのトランザクションでは、CPU時間が使用されます。
サーバーには、単にユーザーに応答する以外のタスクがあります。 そのCPUがオペレーティングシステムとwebサービスを実行するために使用されていることは言うまでもありません。 しかし、これとは別に、サーバーはデータを処理するためのいくつかのスクリプトを実行するために使用することができます。 一般的な例の1つは、Ansible playbookを実行することです。 これらのplaybookは、ユーザーが介入することなくタスクを実行することができます。
リソースとタスクの管理
あなたのCPU使用率が低い場合、あなたはあなたのリソースを無駄にしています。 あなたのCPU使用率が非常に高い場合や、システムが遅くなり、遅れを開始する可能性があります。 これらのいずれかを発生させたくないため、サーバーのCPU使用率を監視することが重要です。 サーバーのCPU使用率を監視すると、CPUがどのくらい使用されているかを理解するのに役立ちます。 これは、あなたのCPUがより多くのジョブを行うか、必要性に応えるためにあなたのリソースを増やすことができるかどうかを決定するのに役立
プログラムの最適化
サーバーのCPU使用率の監視は、リソースの管理やタスクの最適化に非常に有利でした。 プログラムが理想的に取るべきであるより多くの時間を取る場合があった。 短い、単純なプログラムを実行している間でさえ、CPU使用率が高いことがわかると、プログラムに何か問題があることがわかります。 多くの場合、プログラムは貧弱なプログラミング練習のために効率的ではありません。 CPU使用率を監視すると、そのようなインスタンスを見つけてコードを最適化するのに役立ちます。 したがって、CPU使用率を監視することは、単一の石で二羽の鳥を打つようなものです。
CPU使用率の”何”と”なぜ”を終え、監視サーバーのCPU使用率がどのように有益であるかを学んだので、”どのように”の部分に行きましょう。
サーバーのCPU使用率を監視する方法
CPU使用率は、一定期間にわたって節約し、必要なときに使用できるお金のようなものではありません。 未使用のCPUは無駄なリソースです。 そのため、誰もがサーバーのCPU使用率を100%に近いものにしたいと考えています。 そして、その最高の状態でそれを維持するために、あなたはいくつかの微調整を行うと、システムを更新し続ける必要があるかもしれません。 何をすべきかを知るには、サーバーのCPU使用率の現在の状態を知る必要があります。
単一のコマンドでサーバーのCPU使用率を確認できます。 Windowsオペレーティングシステムを使用している場合は、コマンドプロンプトを開き、次のコマンドを実行します:
wmic cpu get loadpercentage
このスクリーンショットに示すように、CPU使用率が表示されるはずです:
要件に基づいて、CPU使用率を定期的に照会し、データをどこかに保存してから、後で調べることができます。 または、CPU使用率をダッシュボードにストリーミングしていつでも監視できます。
ほとんどのオペレーティングシステムには、CPU使用率監視のための組み込みツールとユーティリテ しかし、これらのツールには制限があり、通常は基本的すぎます。 現代では、監視データに対処し、作業するための高度な機能が必要であり、それは高度な監視ツールの必要性を呼び出します。 ほぼすべてのサービスがオンラインになりました。 そして、サーバーは、これらのサービスを利用できるようにする上で重要な役割を果たしています。 CPU使用率が高いためにサーバーがダウンしていることを知るために数時間待つ余裕はありません。 CPU使用率やその他のサーバーメトリックを継続的に監視する必要があります。
継続的に監視
ある時点でサーバーのCPU使用率を確認することはあまり役に立ちません。 サーバーのCPU使用率を継続的に監視するには、ソリューションが必要です。 ほぼすべてのサーバーオペレーティングシステムには、任意の時点でCPU使用率を見ることができるパフォーマンスモニタが付属しています。 サーバーのCPU使用率を監視するときは、CPU使用率の急激な変化が通常とは異なる何かが起こったことを示しているため、スパイクを探す必要があります。
CPU使用率をリアルタイムで監視するとともに、このデータを保存して、さまざまな間隔で視覚化および分析できるようにします。 CPU使用率の統計を最大限に活用するには、ログを生成して一定の間隔で(できればリアルタイムで)CPU使用率データを収集し、グラフの形で視覚化する必 これまで1つの指標について説明しましたが、監視するのはサーバーのCPU使用率だけではないことを忘れないでください。 必要なものをすべて一箇所に取得するには、Scalyrを使用します。