【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

ロードアベレージでサーバの負荷を確認する

インフラエンジニアの伊藤です。
サーバ運用保守の悩みといえば、突然の負荷上昇です。
「とりあえずサービスが重い、けど原因がわからん!!」
ってことにならぬよう、まず確認することが多い「ロードアベレージ」がどういったものかをご紹介します!

ロードアベレージについて

負荷が高くてサイトやゲームが重い…ってときは、とりあえずtopコマンドを使うことになります。
topコマンドは、OSのそのタイミングの状態をリアルタイムに表示してくれます。
いっぱい情報があるので、どこを探っていけばいいかわからないかもしれません。

今回はロードアベレージについてですので、ロードアベレージを確認します。

loadaverage_020416_102927_PM

ロードアベレージ(LA)は、そのサーバに対する「プロセスの待ち行列」を表します。
左から「1分前のLA」「5分前のLA」「15分前のLA」となっています。

色んなプロセスがCPUに対して処理してほしいってお願いをしているけど、サーバが捌き切れないために、
そのプロセスが後ろに待ち行列を作っていく状態を表しています。

ロードアベレージの値が高ければ高いほど、そのサーバの負荷は高い状態になります。

サーバが一度に処理出来るプロセスの数は、「そのサーバに乗っているCPUのコア数」になります。
マルチタスクで処理をこなすことが出来るので、例えば4コアのサーバであれば、4つのプロセスの処理を一気にこなすことが出来ます。

もうちょっと詳しく

ロードアベレージについてざっくりご理解頂けたでしょうか。

ここで、Linuxのプロセスについて説明します。
プロセスにも色んな状態があります。

TASK_RUNNING プロセスを実行可能な状態で、実行中or実行待ちの状態
TASK_INTERRUPTIBLE 割り込みが可能だけど、ユーザの入力待ちなどで、いつ復帰するかわからない状態
TASK_UNINTERRUPTIBLE サーバの負荷が高く、割り込みができず待ち状態
TASK_STOPPED 中止された状態
TASK_ZOMBIE いわゆるゾンビプロセス

参考:プロセス管理1 - プロセスディスクリプタ - Pridact情報共有用wiki
参考:Linuxのしくみを学ぶ - プロセス管理とスケジューリング

このうち、以下の3つに関しては負荷に関係ある状態ではありません。

  • TASK_INTERRUPTIBLE:ユーザの入力待ちなどなので、いつ復帰するかわからないから待ち行列には入らない
  • TASK_STOPPED:プロセスが止まっている
  • TASK_ZONBIE:ゾンビ化している

つまり残った2つが待ち行列に入り、ロードアベレージの数値になり、「システムの負荷」ということになります。
「タスクが実行待ちの状態(TASK_RUNNING)」や「負荷が高く割り込み出来ない状態(TASK_UNINTERRUPTIBLE)」です。

  • TASK_RUNNING
  • TASK_UNINTERRUPTIBLE

他にLAが確認出来るコマンド

他にロードアベレージを確認出来るコマンドを2つ紹介します。

wコマンドは、他にどんなユーザがログインしているか確認することが出来ます。

[root@test ~]# w
 12:49:13 up  4:38,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
vagrant  pts/0    10.0.2.2         11:43    0.00s  0.00s  0.00s sshd: vagrant [priv]
vagrant  pts/1    10.0.2.2         11:55   54:08   2.06s  0.00s sshd: vagrant [priv]

uptimeコマンドは、サーバがどれぐらいの時間動作し続けるか確認することが出来ます。
ここもロードアベレージが確認出来ます。

[root@test ~]# uptime
 12:49:34 up  4:38,  2 users,  load average: 0.00, 0.00, 0.00

まとめ

ということで、今回はロードアベレージについて説明しました!

  • 負荷が高いときはロードアベレージを見てみる
  • サーバが処理しきれないプロセスの数がわかる
  • ロードアベレージの数値が高いほど負荷が高い
  • 一口に「プロセス」といってもいろんな状態がある
  • ロードアベレージを見るコマンドは複数ある

こんなことを気にしないシステムを作ることが出来たらそれは最強なのですが、
やっぱりサーバ運用していく中でこういった値を知っていくことってかなり大事なので、
きちんと理解しましょう!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
1
読み込み中...
1 票, 平均: 1.00 / 11
6,255
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始いたします!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始いたします!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author