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

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

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

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

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

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

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

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

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

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

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【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コマンドは、他にどんなユーザがログインしているか確認することが出来ます。

[[email protected] ~]# w
 12:49:13 up  4:38,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              [email protected]   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コマンドは、サーバがどれぐらいの時間動作し続けるか確認することが出来ます。
ここもロードアベレージが確認出来ます。

[[email protected] ~]# uptime
 12:49:34 up  4:38,  2 users,  load average: 0.00, 0.00, 0.00

まとめ

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

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

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

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
1
読み込み中...
1 票, 平均: 1.00 / 11
5,238
facebook twitter はてなブックマーク
【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

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

この記事をかいた人

About the author