API Gateway Resource Adjustment Method
このガイドでは、システムリソースと内部設定を調整することによってAPI Gatewayのパフォーマンスを微調整するための3つの主要な方法を紹介します。これらの方法は、デプロイ中または手動で設定ファイルやUIインターフェースを介して適用できます。
方法1: Podリソースの調整 (CPU / メモリ)
概念
Kubernetesで実行されているKong Gateway PodのCPUとメモリリソースを管理できます。適切なリソース制限とリクエストを設定することで、ゲートウェイインスタンスを安定させ、最適なパフォーマンスを確保します。
設定方法
リソース制限を以下のいずれかで設定します:
- Helm values.yaml
- Kubernetes Deployment YAML
resources:
limits:
cpu: "1000m" # 最大1コア
memory: "1024Mi" # 最大1GB
requests:
cpu: "500m" # 保証された0.5コア
memory: "512Mi" # 保証された512Mi
適用場所
- Helmベースのデプロイメント: values.yamlに追加
- 手動デプロイメント: Deploymentファイルのspec.template.spec.containers.resourcesの下に適用
関連UI
APIMコンソールで、ゲートウェイ管理ページに移動し、次の項目を視覚的に設定できます:
- ゲートウェイのCPU / メモリ
- データベースのCPU / メモリ
- ゲートウェイのレプリカ数
方法2: 環境変数を介したNginx設定の調整
概念
Kongは内部でNginxを使用しており、いくつかのパフォーマンス関連の設定は環境変数またはnginx.conf内で調整できます。これらは、ゲートウェイがクライアントリクエスト、バッファ、および接続制限を処理する方法に影響を与えます。
設定方法
値を以下を通じて設定します:
- KONG_ environment variables*
- Helm values.yamlのenvセクション
env:
KONG_PROXY_ACCESS_LOG: "/dev/stdout"
KONG_ADMIN_ACCESS_LOG: "/dev/stdout"
KONG_CLIENT_BODY_BUFFER_SIZE: "16k"
KONG_CLIENT_MAX_BODY_SIZE: "128m"
KONG_LARGE_CLIENT_HEADER_BUFFERS: "4 16k"
KONG_NGINX_WORKER_PROCESSES: "2"
KONG_NGINX_WORKER_CONNECTIONS: "2048"
nginx.confにおける同等の設定
client_body_buffer_size 16k;
client_max_body_size 128m;
large_client_header_buffers 4 16k;
worker_processes 2;
worker_connections 2048;
これらの設定のほとんどは、values.yamlで環境変数として宣言できます。デプロイ時に、これらは自動的にdeployment.yamlに反映されます。
方法3: データベースとアップストリーム処理リソースの調整
概念
KongがPostgreSQLを使用する場合やDBレスモードで動作する場合、リソースの使用は許可されるDB接続数やキャッシュの設定によって影響を受けます。
設定方法
env:
KONG_DATABASE: "postgres"
KONG_PG_MAX_CONCURRENT_QUERIES: "100"
KONG_PG_MAX_CONNECTIONS: "200"
Kong 3.x以上では、キャッシュをさらに設定できます:
env:
KONG_DB_CACHE_TTL: 3600 # キャッシュのTTL(秒)
KONG_DB_CACHE_WARMUP_ENTITIES: "services,routes,plugins"
パラメータの説明
- KONG_PG_MAX_CONNECTIONS: DB接続の制限
- KONG_DB_CACHE_TTL: キャッシュデータの有効期限
- KONG_DB_CACHE_WARMUP_ENTITIES: 起動時にキャッシュにプリロードされるエンティティ
これらの値は、APIMコンソールのゲートウェイ管理ページで直接管理できます。
主要設定パラメータの概要表
Parameter | Description | Where to Set |
---|---|---|
resources.limits.cpu / memory | Podの最大CPUおよびメモリ | Deployment / values.yaml |
resources.requests.cpu / memory | 確保されたリソース割り当て | Deployment / values.yaml |
KONG_CLIENT_MAX_BODY_SIZE | 最大クライアントボディサイズ | env / nginx.conf |
KONG_NGINX_WORKER_PROCESSES | Nginxワーカーの数 | env / nginx.conf |
KONG_PG_MAX_CONNECTIONS | DB接続制限 | env |
KONG_DB_CACHE_TTL | DBキャッシュの有効期限 | env |
KONG_DB_CACHE_WARMUP_ENTITIES | プリロードされたキャッシュエンティティ | env |