跳到主要内容

API Gateway Resource Adjustment Method

本指南介绍了三种主要方法,通过调整系统资源和内部配置来微调 API 网关性能。这些方法可以在部署期间应用,或通过配置文件和 UI 界面手动应用。

方法 1:调整 Pod 资源(CPU / 内存)

概念

您可以管理在 Kubernetes 中运行的 Kong Gateway Pod 的 CPU 和内存资源。通过设置适当的资源限制和请求,您可以帮助稳定网关实例并确保最佳性能。

配置方法

在以下任一位置设置资源限制:

  • Helm values.yaml
  • Kubernetes 部署 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 或以无数据库模式运行时,资源使用情况会受到允许的数据库连接数量和缓存配置的影响。

配置方法

env:
KONG_DATABASE: "postgres"
KONG_PG_MAX_CONCURRENT_QUERIES: "100"
KONG_PG_MAX_CONNECTIONS: "200"

对于 Kong 3.x 及以上版本,缓存可以进一步配置:

env:
KONG_DB_CACHE_TTL: 3600 # 缓存生存时间(秒)
KONG_DB_CACHE_WARMUP_ENTITIES: "services,routes,plugins"

参数描述

  • KONG_PG_MAX_CONNECTIONS: 限制数据库连接
  • 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_CONNECTIONS数据库连接限制env
KONG_DB_CACHE_TTL数据库缓存的生存时间env
KONG_DB_CACHE_WARMUP_ENTITIES预加载的缓存实体env