もしかしてサーバーが重い?
会社で業務を行っていると、「ネットワークに問題は無いのに複数のアプリケーションが遅いな……」「サーバーで障害が起きているというエラーメッセージがよく表示されるな……」と思ったことはありませんか?もしかすると、その原因はサーバーが重いからかもしれません。そんなときはどのように対処すればよいのでしょうか。ここでは、サーバーの状況を把握したうえで、どこに問題があるかを分析していく方法を紹介します。
サーバー・ネットワーク監視ツール OpManager
サーバーの状況を把握しよう
【Linuxの場合】まずはコマンドでロードアベレージを確認
サーバーがLinuxの場合、まずはコンピュータの負荷を表す指標の一つであるロードアベレージを把握しましょう。ロードアベレージとは、特定の期間においてCPUが実行待ちとしているプロセス数の平均です。ロードアベレージが大きいほど負荷が重いことを意味します。Linuxではuptimeコマンドやtopコマンドなどにより直近のロードアベレージを確認できます。
ロードアベレージが高い場合は、CPU、メモリー、ディスクI/Oのいずれかに問題があります。CPUはプログラムの内容を解釈して処理を行い、メモリーでCPUが処理するデータを一時的に記憶します。データは長期的にはディスクに保存され、ディスクI/Oは読み込み・書き込みを意味します。これらの値を確認してボトルネックがどこにあるかを把握しましょう。
【Windowsの場合】タスクマネージャーを起動して確認
サーバーがWindowsの場合は、タスクマネージャーからCPU、メモリーの負荷を確認できます。パフォーマンスタブでCPUの使用率や速度、メモリーの使用量・使用率などの情報を把握可能です。
また、ディスクの読み取り速度・書き込み速度を把握することもできます。
CPU使用率が高いときは何が原因?
さらに原因を細かく分析することも可能です。CPU使用率はユーザーモードとシステムモード(カーネルモード)に分類できます。ユーザーモードとは、主に利用者が使用するソフトウェアを動作させるための実行モードであり、アプリケーションの実行に関与します。システムモードは、OSの中核であるカーネルが動作するモードであり、ハードウェアリソースやソフトウェアの制御・管理を行います。
そのため、ユーザーモードのCPU使用率が高い場合はアプリケーションがボトルネックとなっています。一方、システムモードのCPU使用率が高いのならカーネル空間の処理に問題が発生していて、プロセス(実行しているプログラム)やスレッド(プロセスの実行単位)の動作が原因となっている可能性があります。
サーバーを重くする「I/O待ち」とは?スワップが発生している?
サーバーのパフォーマンスが低下する一因にI/O待ち(I/O Wait)があります。I/O待ちとは、CPUがディスクとのデータの読み書きを待つ時間のことです。I/O待ちが長くなる要因としてスワップの過度な発生が挙げられます。
スワップとは、メモリーがディスクの同容量の領域とプログラム単位でデータを交換することを指します。これにより、物理的な容量よりも広いメモリー空間を扱えるようになり、高速にアクセスできるメモリーの特性を存分に活かすことができます。
スワップには2種類の動作があります。メモリー上に空き領域を作り出すために、メモリーにあるデータをディスク上のスワップ領域に書き出して、メモリー上の該当するデータを削除する操作をスワップアウトと呼びます。スワップアウトによりメモリー上に空間が生まれます。
ディスクに書き出した内容へのアクセス要求があった際は、メモリー上に確保した領域に書き戻してアクセス可能となるようにします。この操作をスワップインといいます。
スワップインが多発していると、実行するプログラムに対してメモリーの容量が小さすぎるため、ディスクとのやり取りが多い状況となっています。あまりに大きな容量のメモリーを使用する際は、メモリーからディスクへ書き出した内容がすぐにまた必要となるため読み込まれます。しかし、メモリーの空き領域は不足しているため、またすぐディスクへの書き出しが発生してしまいます。このように、メモリーとディスクの間で極度に頻繁に内容を入れ替える動作をスラッシングと呼びます。
スワップが過度に多い場合は、メモリーの増設や、実行しているアプリケーションの削減を検討しましょう。スワップが発生していないにもかかわらずもI/O待ちが長いケースでは、ディスクI/Oがボトルネックとなります。
サーバーが重い原因を監視ツールで簡単に分析する方法
SNMPで手軽にリソースを監視
サーバー・ネットワーク監視ツール「OpManager」の機能を用いると様々な項目を監視でき、サーバーが重い原因を突き止めることができます。カスタムダイアルから監視項目を追加すると、CPU使用率、メモリー使用率、ディスク使用率などを一目で確認可能です。SNMPを用いてこれらの情報を取得しており、監視対象に専用のエージェントを個別にインストールすることなく手軽に監視できます。
【関連】 SNMPによるサーバーCPU・メモリ監視の方法 (manageengine.jp)
プロセス監視でサーバーごと・機器全体のリソースを監視
OpManagerはプロセス監視が可能です。プロセス監視では、サーバーで稼働しているプロセスの可用性と応答時間を監視します。サーバーごとに、プロセスの可用性やCPU使用率、メモリー使用率、インスタンス数などを監視できます。
【関連】 プロセス監視|OpManager - ManageEngine
また、ダッシュボード画面にプロセス関連のウィジェットを配置することで、登録機器全体のプロセスについて可用性やCPU使用率などの順に可視化できます。
WMI監視によりリソース状況を分析してボトルネックの箇所を確認
OpManagerはWMIを用いて、Windowsサーバーのリソース、Windowサービス、プロセス、イベントログなどの各種項目を手軽に監視できます。リソース状況として、CPU、メモリー、ディスクの使用率を把握できるほか、さらに詳細にボトルネックを分析可能です。
CPU領域では、プロセス数・スレッド数や% User Timeを確認できます。% User Timeとは、プロセッサがアイドル状態でなく実際にタスクを処理している時間のうち、ユーザーモードで経過した割合を指します。
ディスクに関しては、読み込み速度・書き込み速度などに加えて、読み込み・書き込み・転送を完了するまでの平均時間を平均ディスク遅延として確認可能です。
さらに、スワップメモリの使用量・使用率を確認できます。加えて、ページフォールトも把握可能です。ページはプログラムを分割した単位であり、ページフォールトはアクセスしようとしたページがメモリー上に存在しない場合に発生します。この場合、OSがディスクから該当するページを読み込んでメモリーに配置する動作が必要となります。この動作が頻繁に発生するとシステムのパフォーマンスが低下することがあります。
これらの項目の確認を通じて、サーバーが重い原因となっているボトルネックがどこにあるかを把握できます。
【関連】 WMI監視機能|OpManager - ManageEngine
加えて、さらに監視項目を追加することも可能です。WMIをはじめとした様々なプロトコルにより各種パフォーマンスを監視できます。
OpManagerの機能や特徴についてさらに知りたい方は、ぜひ 製品概要資料 をご覧ください。また、以下のとおり登録不要で操作できる体験サイトもご用意していますので、ぜひご活用ください。
インストール不要で操作できる体験サイト
ManageEngineのネットワーク監視ツール「OpManager」では、ツールの使用感を確認できるGUIベースのサイトを提供しております。制限はありますが、実際に操作いただくことも可能です。
インストールや設定は一切必要ないので、お気軽にお試しください。