API Gateway Resource Adjustment Method
本指南介绍了三种主要方法,通过调整系统资源和内部配置来微调API Gateway性能。这些方法可以在部署期间应用,也可以通过配置文件和用户界面手动应用。
方法 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或在无数据库模式下运行时,资源使用受到允许的数据库连接数量和缓存配置的影响。
配置方法
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和内存 | 部署 / values.yaml |
resources.requests.cpu / memory | 保证的资源分配 | 部署 / 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 |