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 下应用
相关 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 或以无数据库模式运行时,资源使用情况会受到允许的数据库连接数量和缓存配置的影响。
配置方法
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 / 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 | 数据库连接限制 | env |
KONG_DB_CACHE_TTL | 数据库缓存的生存时间 | env |
KONG_DB_CACHE_WARMUP_ENTITIES | 预加载的缓存实体 | env |