サーバー負荷が高くなる原因とは。負荷がかかっている部分を特定する方法を解説

インフラエンジニアの伊藤です。

前回、サーバーの負荷が上がったときに確認する「ロードアベレージ」というものをご紹介しました。
ロードアベレージでサーバーの負荷を確認する ? ビヨンドブログ

ロードアベレージは、処理待ちのプロセスを表したものになります。
数値が高ければ高いほど処理待ちのプロセス数が多く、「負荷が高い」という状況になります。

今回は、なぜ負荷が高いという状況になるのか?の原因を探っていきたいと思います。

原因は大きく分けて2つある

ロードアベレージが高い状況が起こる原因は基本的に大きくわけて2つあります。

  • CPUの処理が追いつかない
  • ディスクI/Oの処理が追いつかない

では、それぞれが原因であるときの探り方を説明していきたいと思います。

CPUが原因の場合

まずはtopコマンドなどでCPUの使用率を見てみます。注目すべきは以下2つの値です。

%user ユーザプロセスが使用しているCPU使用率
%system システム(カーネル)が使用しているCPU使用率

一般的なプロセスがCPUに負荷がかかる場合は、だいたいユーザモード(%user)のCPU使用率が高くなっているはずです。

また、ユーザモードのプロセスは、大量のプロセスを動作させていたりする場合は、プロセスの切り替え等を行います。
その「プロセスの切り替え」を行う際にカーネルモード(%system)のCPUを使うので、
プロセスの切り替えが多いプログラムに関してはカーネルモードのCPU使用率が高くなっているでしょう。

stress-user_022516_092215_PM
ユーザモードのCPU使用率が高い場合

stress-system_022516_092244_PM
カーネルのCPU使用率が高い場合

ディスクI/Oが原因の場合

ディスクI/Oが原因の場合は、topで以下について注目してみます。

%iowait ディスクI/Oが必要な場合のプロセスがアイドル状態である
SWAP メモリを使用しつくして、HDDをメモリ代わりに使用している量

iowaitの値は、ディスクからデータを読み書きを大量に行っている際に高くなることが多いです。
例えばDBサーバーでデータベースへのアクセスが多いサーバーは、iowaitの値が高くなりやすいです。

SWAPは、プロセスがメモリを全て使用してしまった場合にHDDをメモリ代わりに使用している容量になります。
SWAPを使う例としては、Webサーバーなどで、大量にアクセスがあった場合にメモリを確保していってSWAPを使用することがあります。

SWAPを使用している場合、メモリの代わりにHDDを使用する=ディスクI/Oで負荷が高まるため、サーバーの速度としては遅くなります。

stress-disk_022516_092255_PM
iowaitが高く、ディスクI/Oが原因で負荷が高い場合

stress-swap
SWAPを使用している場合

原因調査していく

これで、CPUが原因か、I/Oが原因かがわかるようになると思います。
更にpsコマンド等でどのプロセスがCPUを使用しているか(SWAPの場合はメモリを使用しているか)を探っていきます。

ユーザモードのCPU使用率が高い場合には、I/O等で問題がないので、
CPUの性能を上げるか、プログラム的な見直しが必要になるかもしれません。

ディスクI/O側に問題がある場合はメモリ増設を行ったり、プログラム側でディスクI/Oではなくメモリの空きがある場所で一旦処理をさせる、といった見直しが必要があるかもしれません。

また、ロードアベレージが低いけど処理が遅い場合があるかもしれません。
その場合にはソフトウェアの設定や、ネットワークの処理が問題になっている可能性があります。

まずは「負荷が高い」という問題に直面したときは、落ち着いてどの部分に負荷がかかっているかを特定していくことが、解決への第一歩になるでしょう。

クラウドのプロに相談したい場合

弊社ビヨンドでは、創業以来、マルチクラウドインテグレーター・マネージドサービスプロバイダー(MSP)として培った技術力で、AWS や GCP・Azure・Oracle Cloud など、様々なクラウドサーバーのプラットフォームを駆使した設計・構築・移行を行ってきました。

お客様が求めるシステムやアプリケーションの仕様・機能に応じて、お客様向けに最適化された、オーダーメイド型のクラウドサーバー環境をご提供いたしますので、クラウドにご興味のある方はお気軽にお問い合わせください。

● クラウド / サーバー設計・構築
● クラウド / サーバー移行・マイグレーション
● クラウド / サーバー運用保守・監視(24時間365日)

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
4
読み込み中...
4 票, 平均: 1.00 / 14
16,601
X facebook はてなブックマーク pocket

この記事をかいた人

About the author