画像ツール一覧

負荷テスト

Load Test

OPERATION

負荷テストとは、想定するアクセスや処理を発生させ、応答時間、エラー率、資源使用量などを測る試験です。想定ピークに耐えられるか、どこが詰まるか、負荷が下がった後に回復できるかを確かめます。

🐾 猫で例えると?

同じハンモックにアメショと茶トラが2匹で乗り、布地がたわんでいる写真
2匹の重みでたわむハンモック。増えた負荷を確かめるイメージ

仲良しのアメショと茶トラが、同じハンモックにぎゅっと収まっています。2匹の重みで布地がたわむ様子を、アクセスが増えたシステムに見立ててみましょう。負荷テストでは、想定する利用人数や処理量を与えて、応答時間やエラーの増え方を確かめます。限界まで増やす試験もありますが、普段の利用量で問題なく動くかの確認も大切です。

🐾 PR

💻 IT現場における「負荷テスト」とは?

Webサイトやアプリを公開した直後、テレビで紹介されたりSNSでバズったりしてアクセスが殺到し、「画面が真っ白になった」「購入ボタンが押せない」といったトラブルを見たことはありませんか?これを未然に防ぐのが負荷テストの役割です。

仮想利用者の数は目的に合わせて決めます。数を増やすだけでなく、実際の操作の割合や待ち時間、データ量を再現することが重要です。仮想利用者100人が毎秒100リクエストを送るとは限らず、応答時間とシナリオで発生量が変わります。

⚠️ 負荷テストの仕組みと注意点

一口に負荷テストと言っても、目的によっていくつか種類があります。日常的なピーク時を想定した「ロードテスト」、限界を超えてシステムがどう壊れるかを見る「ストレステスト」、長時間連続で負荷をかけ続ける「耐久テスト」などです。

本番との差を把握して結果を解釈する

小さな環境の試験でも、比較やボトルネックの発見には役立ちます。ただし、台数、データ量、キャッシュ、外部依存が違えば、その結果を本番の限界値としては扱えません。

// k6をインストールし、管理するローカルHTTPサーバーを8080番で起動した例
import http from "k6/http";
import { check, sleep } from "k6";

export const options = {
  vus: 2,
  duration: "10s",
  thresholds: { http_req_failed: ["rate<0.01"] },
};

export default function () {
  const response = http.get("http://127.0.0.1:8080/");
  check(response, { "HTTP 200": r => r.status === 200 });
  sleep(1);
}

これは小さな負荷で動作を確かめる入口です。試験対象を管理できる環境に限定し、監視しながら段階的に負荷を増やします。平均応答時間だけでなく、p95など遅い側の値とエラー率も確認すると、利用者への影響を捉えやすくなります。

🛠️ 負荷テストを賢く実施するためのポイント

リリース直前に「実は全然アクセスに耐えられませんでした!」と発覚するのが最も恐ろしいパターンです。現場で失敗しないためのポイントを紹介します。

2匹で使うハンモックの余裕を確かめるように、負荷テストでは想定した使い方を再現します。同時利用数だけでなく、応答時間・エラー率・資源使用量を記録しましょう。負荷を下げた後に回復するかも確認すると、増強と復旧の判断に使えます。