負荷テストのOSS比較【2026年版】k6・LocustでAPIとWebアプリの限界を測定する
オープンソースラボ編集部 ・ 2026年6月13日
本番リリース前に「何ユーザーまで捌けるか」を計測せずにリリースして障害を起こした経験はありませんか?OSSの負荷テストツールでCI/CDに性能テストを組み込みましょう。
負荷テストで確認すること
- スループット — 1秒間に何リクエスト処理できるか(RPS)
- レイテンシ — P95・P99レスポンスタイム
- エラーレート — 高負荷時のエラー発生率
- スケーラビリティ — ユーザー増加に比例してスループットが伸びるか
- ボトルネック — DB・メモリ・CPU・外部API依存のどこが先に詰まるか
OSS 負荷テストツール比較表
| ツール | スクリプト言語 | CI対応 | 分散実行 | 特徴 |
|---|---|---|---|---|
| k6 | JavaScript | ✅ | ✅ | 最も現代的・Go製・CLI |
| Locust | Python | ✅ | ✅ | Webダッシュボード・Python |
| Gatling | Scala/Java | ✅ | ✅ | エンタープライズ実績・レポート美麗 |
| Apache JMeter | GUI設定 | ✅ | ✅ | 最も老舗・GUIで設定 |
k6:最も現代的なOSS負荷テストツール
k6(公式サイト↗・GitHub↗)はGrafana Labs製のGo製OSS負荷テストツールです。JavaScriptでテストスクリプトを書き、CLI一発で実行します。Grafana・InfluxDB・Prometheus等へのメトリクス出力が充実しています。
// k6-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 100, // 100仮想ユーザー
duration: '30s', // 30秒間
};
export default function () {
const res = http.get('https://api.example.com/health');
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 500ms': (r) => r.timings.duration < 500,
});
sleep(1);
}
k6 run k6-test.js
詳しくはk6公式ドキュメント↗およびLocust公式サイト↗を参照。
DevOps関連OSSはDevOpsカテゴリから。モニタリングとの組み合わせはセキュリティカテゴリも参照。
Locust:Pythonで書けるOSS負荷テストツール
Locust(公式サイト↗・GitHub↗)はPython製のOSS負荷テストフレームワークです。Pythonでシナリオを書き、ブラウザのWebダッシュボードでリアルタイムに結果を確認できます。Python SDKなのでカスタムロジックの作成が容易です。
選び方
| ユースケース | 推奨 |
|---|---|
| 現代的・JS・CI組み込み | k6 |
| Python・WebUI確認 | Locust |
| 美しいHTMLレポート | Gatling |
| GUI設定・非エンジニア | Apache JMeter |
まとめ
2026年の負荷テストOSS:JavaScriptでCIに組み込むならk6、Pythonで柔軟なシナリオを書くならLocustが最有力です。
よくある質問(FAQ)
Q. 負荷テストはどのくらいの規模からやるべきですか?
APIが月間1万リクエスト以上あれば実施を推奨します。特にキャンペーンや大量流入が予想されるイベント前には必須です。100VU・30秒でも多くの問題を発見できます。
Q. k6の結果をGrafanaで可視化できますか?
はい。k6はInfluxDB・Prometheus・Grafana Cloudへのメトリクス送信が標準サポートされています。k6 run --out influxdb=http://localhost:8086/k6 test.jsで即座に連携できます。
Q. WebSocketやgRPCの負荷テストもできますか?
k6はWebSocket・gRPC・GraphQL・Kafka等の拡張プロトコルをサポートしています。公式のk6 extensionsエコシステムから用途に合ったプラグインを選べます。