メインコンテンツまでスキップ

テスト環境

本ドキュメントでは、性能検証に使用するテスト環境の構成と設定について説明する。


ハードウェア構成

検証用マシン

項目スペック
モデルMacBook Pro 14インチ (2023)
チップApple M2 Max
メモリ64 GB
OSmacOS 15.0.1 (24A348)

本番想定構成

中規模(〜1,000 req/s)を想定した推奨構成:

コンポーネントスペックインスタンス数
idp-server2 vCPU, 4GB RAM2-4
PostgreSQL4 vCPU, 8GB RAM1 (Primary)
Redis2 vCPU, 4GB RAM1
ロードバランサ-1

ソフトウェア構成

アプリケーション設定

JVM設定

JAVA_TOOL_OPTIONS: >-
-Xms512m
-Xmx2g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
パラメータ説明
-Xms512m初期ヒープサイズ
-Xmx2g最大ヒープサイズ
-XX:+UseG1GC有効G1ガベージコレクタ使用
-XX:MaxGCPauseMillis100最大GC停止時間
注記

G1GCをOFFにした場合、レスポンス時間の短縮が確認されている。本番環境では要検討。

Tomcat設定

server:
tomcat:
threads:
max: 300
min-spare: 50
connection-timeout: 20000
accept-count: 100
パラメータ説明
maxThreads300最大ワーカースレッド数
minSpareThreads50最小待機スレッド数
connectionTimeout20000コネクションタイムアウト(ms)
acceptCount100接続キューサイズ

データベース設定

PostgreSQL

services:
postgresql:
image: postgres:16
command:
- "postgres"
- "-c"
- "shared_preload_libraries=pg_stat_statements"
- "-c"
- "max_connections=200"
- "-c"
- "shared_buffers=256MB"
パラメータ説明
max_connections200最大接続数
shared_buffers256MB共有バッファサイズ
pg_stat_statements有効クエリ統計収集

MySQL

services:
mysql:
image: mysql:8.0
command:
- "--max_connections=200"
- "--innodb_buffer_pool_size=256M"

キャッシュ設定

Redis

environment:
CACHE_ENABLE: true
CACHE_TTL: 300
REDIS_HOST: redis
REDIS_PORT: 6379
パラメータ説明
CACHE_ENABLEtrueキャッシュ有効化
CACHE_TTL300キャッシュTTL(秒)

Docker Compose構成

基本構成

services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- idp-server-1
- idp-server-2

idp-server-1:
image: idp-server:latest
deploy:
resources:
limits:
cpus: '2'
memory: 2G

idp-server-2:
image: idp-server:latest
deploy:
resources:
limits:
cpus: '2'
memory: 2G

postgresql:
image: postgres:16
command: ["postgres", "-c", "shared_preload_libraries=pg_stat_statements"]

redis:
image: redis:7-alpine

リソース制限

コンテナCPUメモリ
idp-server2コア2GB
postgresql--
redis--
nginx--

テストデータ

テストデータの準備についてはテスト実行ガイドを参照。


負荷テストツール

k6

# インストール
brew install k6

# バージョン確認
k6 version

環境変数

ロードテストスクリプトはperformance-test-tenant.jsonから設定を自動読み込みするため、環境変数設定は最小限で済む。

# BASE_URLのみ必要(オプション、デフォルト: http://localhost:8080)
export BASE_URL=http://localhost:8080
注記

ストレステストは引き続き環境変数が必要です。詳細はテスト実行ガイドを参照してください。


モニタリング

リソース監視

# Docker Stats
docker stats $(docker compose ps -q idp-server)

PostgreSQL クエリ統計

-- pg_stat_statements有効化
CREATE EXTENSION pg_stat_statements;

-- 統計リセット
SELECT pg_stat_statements_reset();

-- 上位クエリ取得
SELECT query, calls, total_exec_time, mean_exec_time, rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20;

アプリケーションログ

logging:
level:
root: info
web: info
file:
name: logs/idp-server.log
pattern:
file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"