LoginSignup
3
5

More than 5 years have passed since last update.

「サーバの負荷」とは

Last updated at Posted at 2019-04-09

「サーバの負荷」の要因

複数の要素がある
1. CPU利用率
2. I/O
3. メモリ
4. その他諸々

サーバのボトルネックの切り分け

Case 1. ロードアベレージが高い

この場合、実行したい処理が実行待ちのプロセスが多いことを意味する。
そのためスループットが低下する。

Terminal
$ top
-- load averageを確認
$ vmstat 1
-- r: 実行中および実行待ちのプロセス数
-- b: I/O待ちのプロセス数
-- swpd: メモリのスワップ使用量
-- bi: ブロック型デバイス(主にディスク)から読み込みブロック数(IN)
-- bo: ブロック型デバイス(主にディスク)への書き込みブロック数(OUT)
-- us: CPU使用率(カーネル以外)
-- wa: CPU使用のうちI/Oウェイトにかかった割合

ロードアベレージ = r: 実行中および実行待ちのプロセス数 + b: I/O待ちのプロセス数です。

Case 2. ロードアベレージが低い

Q and A

Q. php test.phpすると r: 0, b: 1にならないのはなぜ?
r: 1, b: 1になる想定。

test.php
<?php
$file = 'test.txt';
while (true) {
  $current = file_get_contents($file);
  $current .= "test\n";
  file_put_contents($file, $current);
}

A. 1実行プログラム1プロセスだから。プロセスの状態は以下の通り遷移する。
proc_stat.gif
引用元. LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita

Q. サーバの負荷を見るときは、ロードアベレージではなくCPU利用率ではだめなの?
A. だめです。
サーバの負荷の要因にはCPU利用率以外にI/O待ちのプロセス数(その他諸々)がある。
そのためCPU利用率が0%でもサーバに負荷がかかる可能性がある。

参考文献

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5