You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS环境下Oracle RDS数据库CPU利用率受限问题排查求助

排查EKS环境下RDS CPU利用率偏低的步骤

针对你遇到的EKS环境中RDS CPU利用率远低于同VPC EC2实例的问题,可按以下方向逐步排查:

1. 验证容器CPU资源是否受限

  • 查看容器实际CPU使用情况:执行 kubectl top pods,对比容器的CPU使用率与请求值(1核)。如果容器CPU已接近或超过请求值,且节点剩余CPU不足,即使未设置CPU限制,Kubernetes的调度器也可能限制容器的CPU突发能力,导致应用无法发起更多数据库请求。
  • 检查节点资源占用:执行 kubectl describe node <节点名称>,查看节点的CPU总容量、已分配资源及剩余可用资源,确认是否有其他Pod抢占了节点CPU。

2. 确认数据库实际连接数

  • 在Oracle RDS中执行以下查询,查看活跃用户连接数:
    SELECT COUNT(*) FROM v$session WHERE STATUS = 'ACTIVE' AND TYPE = 'USER';
    
    对比EC2环境下的活跃连接数,如果EKS环境的连接数远低于EC2,说明应用侧未发起足够的数据库请求,问题根源在应用而非数据库。

3. 排查网络层面限制

  • 安全组与网络ACL:确认EKS节点的安全组是否允许出站到RDS端口(默认1521)的所有连接,同时检查RDS的安全组是否允许来自EKS节点的入站连接。即使同VPC,安全组规则过严可能限制并发连接数。
  • 节点网络性能:在EKS节点上使用 iftop 或 nload 工具监控网络带宽,对比EC2实例的带宽使用情况,确认是否存在带宽瓶颈。
  • CNI连接跟踪限制:执行 sysctl net.netfilter.nf_conntrack_count 和 sysctl net.netfilter.nf_conntrack_max,如果连接数接近最大值,会导致新连接被丢弃,影响并发请求。可通过调整 nf_conntrack_max 参数扩大上限。

4. 验证DNS解析正确性

  • 进入应用容器执行 nslookup db-svc,确认解析结果为RDS的私网IP。如果DNS解析延迟或返回错误IP,会导致数据库连接延迟,降低应用并发能力。

5. 检查容器QoS与调度优先级

  • 查看Pod的QoS类别:执行 kubectl describe pod <Pod名称>,确认QoS为Burstable(因为仅设置了CPU请求)。如果节点上存在Guaranteed QoS的Pod,会优先占用CPU资源,导致应用容器的CPU调度优先级降低。
  • 检查CPU管理器配置:如果EKS启用了静态CPU管理,确认容器的CPU请求是否为整数核,且节点有足够的专属CPU核心分配给容器。

6. 对比EC2与EKS的应用性能

  • 在EKS容器内直接压测应用(例如使用 wrk -t12 -c400 -d30s http://localhost),记录QPS和响应时间,与EC2环境的压测结果对比。如果EKS的应用QPS远低于EC2,说明容器化后的应用本身存在性能瓶颈,需排查镜像依赖、系统参数配置等问题。

7. 检查RDS端的等待事件

  • 在Oracle RDS中执行以下查询,查看是否存在阻塞或非空闲等待事件:
    SELECT EVENT, COUNT(*) FROM v$session_wait WHERE EVENT NOT LIKE '%idle%' GROUP BY EVENT;
    
    如果存在大量等待事件(如 enq: TX - row lock contention),即使CPU使用率低,也可能是数据库内部阻塞导致应用无法充分利用数据库资源。

内容的提问来源于stack exchange,提问作者sethu2912

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:53:38