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

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の下に適用

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 / memoryPodの最大CPUおよびメモリDeployment / values.yaml
resources.requests.cpu / memory確保されたリソース割り当てDeployment / values.yaml
KONG_CLIENT_MAX_BODY_SIZE最大クライアントボディサイズenv / nginx.conf
KONG_NGINX_WORKER_PROCESSESNginxワーカーの数env / nginx.conf
KONG_PG_MAX_CONNECTIONSDB接続制限env
KONG_DB_CACHE_TTLDBキャッシュの有効期限env
KONG_DB_CACHE_WARMUP_ENTITIESプリロードされたキャッシュエンティティenv