システム高並発負荷テストサービス(公開前容量評価)
本番公開前に段階加圧と全経路混合シナリオでユーザーアクセス量の上限と性能屈曲点を測定。テスト中はサーバー性能指標監視システムを導入し、業務モジュール別の不具合是正提案書と API テスト報告書、容量計画・弾性拡張・レート制限の提案を納品します。
システム高並発負荷テストサービス(公開前容量評価)
サービス概要
システム高並発負荷テストサービスは、本番稼働直前、大規模リリース、またはトラフィック急増を控えた IT 業務システムを対象に、「このシステムは結局何人まで捌けるのか」を測定可能かつ再現可能な結論に変えます。本番構成にできる限り近い隔離環境で、実際の業務比率に沿った全経路の混合シナリオを組み、低並発から段階的に負荷を上げて性能の屈曲点(ニー)を検出します。テスト期間中はサーバー性能指標監視システムを導入し、CPU・メモリ・ディスク IO・ネットワーク・コネクションプールと、応答時間・スループット・エラー率を同一のタイムラインに揃えます。最終的に、システムが耐えられるユーザーアクセス量の上限、サーバー計算リソースとソフトウェアの弾性余力、どの程度のユーザー圧力に抗えるかを評価し、さらに『業務機能モジュール別 不具合是正提案書』と『API テスト報告書』という、そのまま是正と検収に使える 2 つの文書を提出します。経験則や「公開してから様子を見る」ではなく、根拠にもとづく公開判断を可能にします。
テスト種別とシナリオ設計
| テスト種別 | 負荷のかけ方 | 答える問い | 代表的な判定基準 |
|---|---|---|---|
| 単一 API ベースライン | 仮想ユーザー 1 名で反復実行し、安定値を取得 | 無負荷時の API ごとの応答時間と TPS ベースライン | 以降の全比較の基準点を確立 |
| 段階的負荷テスト | 予測ピークの約 30% から開始し、1 段ごとに 10〜20% 増加、各段 3〜5 分維持 | 並発数ごとに応答時間・スループット・リソース水位がどう変化するか | P95 / P99 が閾値内、エラー率合格、リソースの持続的飽和なし |
| 容量屈曲点の検出 | スループットが線形に増えなくなるまで加圧を継続 | 最大有効並発数と最適並発数 | スループット・遅延・エラーの 3 つの屈曲点シグナル(後述) |
| 極限負荷 / 破壊的テスト | 屈曲点を超えてエラー、連鎖障害、サービス停止まで加圧 | 障害モード、グレースフルな縮退と回復の可否 | 崩壊点の明示、保護機構の有無、手作業なしで復旧できるか |
| 瞬間ピーク衝撃 | 同期ポイントで高並発を一気に解放し、フラッシュセールや整時の集中アクセスを再現 | 瞬間的な洪峰下での待ち行列、売り越し、レート制限の挙動 | 不正データなし、重複送信なし、基幹経路が利用可能 |
| 安定性 / ソークテスト | 目標負荷の 70〜80% を数時間〜24 時間継続 | メモリリーク、接続リーク、ファイルハンドル、スロークエリが時間とともに劣化するか | 指標が安定し、漸進的な劣化がないこと |
| 全経路混合シナリオ | 実業務比率で複数 API を組み合わせ、思考時間を挿入 | 全コンポーネントが連動したときの真の処理能力 | シナリオ比率が本番トラフィック模型と一致し、負荷が過大にならない |
| 弾性・退化の検証 | 加圧中に HPA スケールアウト、レート制限、サーキットブレーク、退化を発動 | 計算リソースとソフトウェアに弾性余力があるか、拡縮容が間に合うか | 拡張中のエラー率と遅延が制御範囲内、縮小で悪影響が出ない |
「全員が一斉に注文を送信する」脚本では正しい結論は得られません。実際のユーザーは閲覧し、検索し、迷います。業務比率と思考時間がなければ、コネクションプールが瞬時に枯渇し、キャッシュはほとんど使われないままになります。
中核指標体系
| 次元 | 主要指標 | なぜ必須か |
|---|---|---|
| 業務容量 | 並発ユーザー数、アクティブセッション数、QPS / TPS | 「ユーザーアクセス量の上限」に直接対応する |
| 応答体験 | 平均応答時間、P50 / P95 / P99、テールレイテンシ | 平均値はテール劣化を隠すため、分位数が実際の体験を表す |
| スループット | TPS / QPS 曲線と並発増加に対する勾配 | システムがまだ有効に働いているか、いつ飽和するかを示す |
| 正確性 | エラー率、タイムアウト率、5xx と接続拒否、業務成功率、データ整合性 | レッドライン指標。越えた時点でその並発段は不合格 |
| サーバーリソース | CPU(sys と iowait を含む)、メモリと swap、ディスク IOPS / await / util、NIC 帯域、接続数 | 最初に飽和したボトルネックを特定し、リソース不足と設計不具合を切り分ける |
| アプリとミドルウェア | スレッドプールとキュー、コネクションプール使用率、JVM GC とヒープ、Nginx worker、Redis ヒット率、MQ 滞留 | 「CPU は空いているのに遅い」という典型的な状況を説明する |
| データベース | スロークエリ、ロック待ちとデッドロック、接続数、バッファプールヒット率、レプリケーション遅延 | 高並発のボトルネックは最終的にデータ層に落ちることが多い |
判定基準はテスト開始前に顧客と合意して方案に明記します。例えば「目標並発で基幹 API の P99 は 1 秒以内、エラー率 0.1% 未満、ピーク CPU は持続 80% 以下」といった形です。検収の場で「まあ大丈夫そう」という感覚に頼らせません。
屈曲点の判定とアクセス量上限への換算
| 屈曲点の種類 | 判定シグナル | 意味すること |
|---|---|---|
| スループット屈曲点 | 並発を 20% 上げても TPS の伸びがその半分に満たず、曲線が平坦化する | 饱和に近づき、ユーザーを増やしても処理ではなく待ち行列が増えるだけ |
| 遅延屈曲点 | P95 / P99 が安定状態から急上昇し、業務許容閾値を突破する | キューが溜まり始め、システム崩壊より先にユーザー体験が悪化する |
| エラー屈曲点 | タイムアウト、5xx、接続拒否が連続し、エラー率がレッドラインを越える | 信頼の境界を越えており、加圧を停止してテストデータを保護すべき |
屈曲点の 1 段前の並発数を最大有効並発とし、「並発数 ≈ TPS × 応答時間(秒)」で本番容量に換算します。さらにピーク係数と 1.5〜2 倍の安全余裕を掛け、推奨サーバーサイズ、インスタンス数、ゲートウェイのレート制限値を導きます。結論は「現構成は 4,000 並発まで安定、本番は 6,000 並発を見込み、入口のレート制限はピーク TPS の 1.2 倍に設定」のように、そのまま実行できる一文で示します。拡張や最適化後は必ず同一シナリオで再測定し、ボトルネックが本当に移動したか、大きなマシンで一時的に隠れただけかを確認します。
テスト期間中に導入するサーバー性能指標監視システム
| 階層 | 導入内容 | 負荷テストでの役割 |
|---|---|---|
| システム収集層 | 測定対象の全サーバーに Prometheus と node_exporter を配備し、nmon、sar、iostat -x、pidstat、PSI、eBPF サンプリングを併用して秒単位で取得 | 5 分平均ではなく、障害ウィンドウの遡及可能な生曲線を残す |
| アプリ・データ層 | JVM / スレッドプール / コネクションプール、Nginx とゲートウェイ、Redis と MQ、DB のスロークエリとロック指標を取り込み | 「業務が遅い」を具体的なモジュールと SQL まで絞り込む |
| 可視化層 | Grafana の統合ダッシュボードに、並発曲線・TPS・P95 / P99・エラー率・リソース水位を重ねて表示し、負荷タイムラインと揃える | どの加圧段で、どの層が最初に飽和したかを一目で把握 |
| アラートと停止保護 | 業務許容度にもとづく閾値を設定し、エラー率またはリソース水位の超過で自動アラートと加圧停止 | 不正データと連鎖障害を防ぎ、結論の信頼性を守る |
| 負荷生成側の自己監視 | JMeter / k6 / Locust 注入機自体の CPU、ポート、ネットワーク、GC を監視し、必要なら分散構成へ拡張 | 「ボトルネックは実は圧測機だった」を防ぎ、かけた負荷が実効であることを担保 |
ダッシュボード、収集設定、生の指標データは報告書と併せて納品します。テスト終了後も本番監視のベースラインとアラート閾値の根拠として使い続けられ、測り終わって撤去されるものではありません。
成果物:不具合是正提案書と API テスト報告書
| 文書 | 収録内容 | 主な利用者 |
|---|---|---|
| 『業務機能モジュール別 不具合是正提案書』 | モジュールおよび API ごとに、不具合の現象、影響範囲、重大度、根本原因、是正提案、優先度、推奨担当、再テスト検証項目を列挙 | 開発・プロダクトチームの是正計画と進捗管理 |
| 『API テスト報告書』 | API ごとのシナリオと並発段階、TPS / QPS、P50 / P95 / P99、エラー率、アサーション結果、スループット曲線、SLA 合否判定 | QA、プロジェクト検収、納品アーカイブ |
| 『システム容量評価・公開可否結論報告』 | ユーザーアクセス量上限、屈曲点並発、計算リソースとソフトウェアの弾性余力、拡張・レート制限の推奨、公開リスクと放行条件 | 運用・アーキテクト・経営層の公開判断 |
- サーバー性能指標ダッシュボードと全量の生指標データ(再利用可能な収集設定とアラートルール付き)。
- 負荷テスト脚本、業務シナリオ模型、パラメータ化データセット、実行記録。顧客自身が再実行できます。
- 性能ベースライン庫:今回と過去の結果を比較し、リリース間の性能劣化を検知。
- 拡張、レート制限、サーキットブレーク、コネクションプール、キャッシュの具体的な設定提案と変更手順。
- 是正後の再測定記録、公開可否の結論、運用チーム向けの知識移管。
2 つの中核文書はいずれもモジュールと API 番号で整理されているため、開発は是正項目をそのままチケットに分割でき、検収側は分位数と合否判定を直接引用できます。二次的な整形は不要です。
実施フロー
- Step 1 · 要件と業務模型の整理:基幹業務経路、ピーク予測、SLA レッドライン、許容応答時間とエラー率、データ量と成長見通しを確認し、判定基準に合意します。
- Step 2 · 環境とデータの準備:本番相当の独立した隔離環境を構築し、マスク済みのパラメータ化データを用意。本番直接加圧や共有検証環境への影響がないことを確認します。
- Step 3 · 監視導入と脚本開発:サーバー性能指標監視システムと Grafana ダッシュボードを配備し、思考時間・パラメータ化・アサーション入りの脚本を作成、負荷生成機の能力を校正します。
- Step 4 · 段階的実行:ベースライン → 段階加圧 → 屈曲点検出 → ピーク衝撃 → ソーク → 弾性・退化検証の順に実施し、段ごとに指標とログを保存。異常時は即停止して切り分けます。
- Step 5 · ボトルネック分析と是正提案:監視タイムラインを突き合わせ、「リソース不足型」と「設計不具合型」を区別し、業務モジュール別の是正提案書と最適化案を提出します。
- Step 6 · 再測定と公開結論:是正後に同一シナリオで再測定して閉じ、API テスト報告書と容量評価結論を提出。監視ベースライン、レート制限・拡張設定、知識移管を納品します。
対応技術スタックとツール
| 階層 | 対応範囲 |
|---|---|
| プロトコルと入口 | HTTP / HTTPS、RESTful API、GraphQL、gRPC、WebSocket、TCP 長接続、ファイルアップロード・ダウンロード |
| アプリ構成 | モノリスとマイクロサービス、Java / Spring Boot、Python、Node.js、PHP、および Nginx、API ゲートウェイ、ロードバランサー |
| データとミドルウェア | MySQL、PostgreSQL、MariaDB、Redis、MongoDB、Kafka / RabbitMQ、Elasticsearch |
| インフラ | 物理サーバー、クラウドインスタンス、KVM / VMware、Kubernetes とコンテナ、HPA 自動拡縮、および銀河麒麟・統信 UOS・openEuler などの信創環境 |
| 負荷テストツール | Apache JMeter、k6、Locust、Gatling、wrk / wrk2。シナリオに応じて選定し、分散加圧と CI/CD 連携に対応 |
ツールは手段であって目的ではありません。JMeter は完全な業務フローと分散加圧、k6 はパイプライン連携、Locust はコードによるユーザー行動定義、Gatling は精緻なレポート、wrk は単一 API の限界打圧に向きます。プロトコル、シナリオの複雑さ、報告要件で選定します。
代表的な適用シナリオ
以下はよくある公開形態ごとに整理した代表例で、テスト設計と結論の形を示すものです。特定の顧客事例を示すものではありません。
シナリオ 1 · EC 大型セール前の全経路容量評価
- 課題:セールのピークは平常の 3 倍と予測されるが、現構成で何人まで捌けるかを誰も説明できず、注文経路の雪崩が最も不安。
- アプローチ:閲覧 60%、検索 20%、カート追加 15%、注文 5% の実比率で混合シナリオを組み、3〜5 秒の思考時間を挿入。さらにフラッシュセール型の瞬間衝撃を重ねます。
- 発見:約 800 並発で注文 API の DB コネクションプールが枯渇し、P99 が 400 ミリ秒から 3 秒へ急上昇。アプリ側 CPU にはまだ余力がありました。
- 結果:プールとスロー SQL の是正後に同一シナリオで再測定し、屈曲点は大きく後退。最大有効並発、推奨インスタンス数、入口レート制限値を公開放行の根拠として提示しました。
シナリオ 2 · 行政ポータルの集中申請
- 課題:申請窓口の開放直後にアクセスが集中する一方、過去のトラフィックデータがなく、本番への直接加圧も認められない。
- アプローチ:隔離環境で段階加圧により屈曲点を特定し、目標負荷の 80% で 12 時間のソークテストを実施。システム層とゲートウェイ層の指標を同時収集します。
- 発見:CPU はまだ余裕があったものの、Nginx worker の接続数とファイルディスクリプタが先に上限に達し、後半で接続拒否が発生しました。
- 結果:worker とディスクリプタ上限を調整し、静的リソースを CDN へ移行。最大同時申請数を明示して緊急時対応計画とレート制限設定に反映しました。
シナリオ 3 · 金融基幹取引 API の検収
- 課題:エラー率のレッドラインが極めて厳しく、不正データや二重課金は一切許容されない。さらに報告書がプロジェクト検収の根拠になる。
- アプローチ:一定スループット加圧と長時間安定性テストを軸に、破壊的テストで退化経路を確認。エラー率超過で自動停止するルールを設定します。
- 発見:数時間連続稼働後に接続リークと周期的な JVM GC 停止が発生し、P99 がノコギリ状にスパイクしました。
- 結果:接続解放ロジックを修正しヒープ・GC パラメータを調整して再測定で合格。API ごとの『API テスト報告書』を提出し、不合格となった並発段を明示しました。
シナリオ 4 · マルチテナント SaaS の弾性余力検証
- 課題:「インスタンスを増やしても本当に効くのか」「自動拡張が間に合うのか」をチームが説明できない。
- アプローチ:段階加圧と同時に Kubernetes HPA のスケールアウトとゲートウェイのレート制限を発動し、拡張前後のスループット・P99・エラー率曲線を比較します。
- 発見:新規 Pod がウォームアップ前にトラフィックを受けて短時間のエラースパイクが発生。縮小のクールダウンが短すぎて繰り返し振動していました。
- 結果:Readiness Probe とウォームアップを追加し、閾値とクールダウンを再調整。弾性余力の結論と従量拡張のコスト提案を提示しました。
当社を選ぶ理由
- Linux とオープンソース技術サービスに約 20 年、数万社への支援実績。1 本の応答曲線だけでなく、システム層・アプリ層・データ層を横断してボトルネックを切り分けます。
- 生の測定データだけでは終わらせません。不具合是正提案書、API テスト報告書、容量計画の結論を併せて提出し、開発の計画立案・検収・公開放行を直接支えます。
- テスト期間中にサーバー性能指標監視システムを導入し、ダッシュボード・収集設定・生データを納品。終了後も本番監視のベースラインとして活用できます。
- 主要な Web / API、マイクロサービス、データベース、ミドルウェアを網羅し、銀河麒麟・統信 UOS・openEuler などの信創環境での負荷テストとチューニング経験があります。
- 標準化されたプロセス、独立した隔離環境、厳格な停止保護、明確な見積り、そしてシニアエンジニアによる 24 時間 365 日の技術サポート。