通过Helm安装的单副本ArgoCD的argocd-server内存过高如何排查?
argocd-server内存占用过高优先排查项
环境基础信息
已采集的集群资源信息如下:
# kubectl get all -n argocd 输出 NAME READY STATUS RESTARTS AGE pod/argocd-application-controller-0 1/1 Running 1 124d pod/argocd-dex-server-7946bfbf79-nknkx 1/1 Running 1 124d pod/argocd-redis-7547547c4f-tv5db 1/1 Running 1 124d pod/argocd-repo-server-7fb6c84b5b-ph5zl 1/1 Running 1 124d pod/argocd-server-658fcf5695-hcjjx 1/1 Running 4 124d
# kubectl top pod 资源占用输出 NAME CPU(cores) MEMORY(bytes) argocd-server-658fcf5695-hcjjx 5193m 24365Mi
优先排查清单
- 托管应用规模校验:统计集群内所有ArgoCD Application、ApplicationSet CR数量,argocd-server默认会全量缓存所有应用的资源状态,单实例托管超过100个应用时内存占用会线性上升,执行
kubectl get applications -A | wc -l可直接统计总量。 - 启动参数配置校验:检查argocd-server的环境变量配置,未配置
GOGC参数时Go应用默认垃圾回收阈值为100,会导致内存占用居高不下,通常调整为GOGC=20可触发更频繁的GC降低内存占用;同时确认是否开启了debug级日志、全量资源同步等冗余特性,此类配置会大幅提升内存消耗。 - 版本漏洞校验:确认当前ArgoCD版本是否存在已知内存泄漏问题,v2.3、v2.4的部分旧版本存在官方确认的argocd-server内存泄漏bug,升级到最新稳定版即可修复。
- API请求量校验:排查是否存在高频API调用,如CI/CD系统频繁拉取应用状态、未认证的端口扫描攻击等,大量并发请求会产生大量临时内存对象无法及时释放,执行
kubectl logs -n argocd argocd-server-658fcf5695-hcjjx可查看请求日志验证频次。 - 资源限制配置校验:检查Helm部署时是否为argocd-server配置了合理的
resources.limits.memory,未配置限制时应用会尽可能占用节点内存,可根据实际业务规模配置阈值,触发OOM前自动重启释放内存。 - 跨组件通信校验:确认argocd-server与redis、repo-server、application-controller的通信是否正常,通信超时、请求失败会导致server反复拉取资源状态,堆积大量无效内存对象,可通过pod日志查看是否存在相关报错。
内容的提问来源于stack exchange,提问作者Park jinhong
相关产品推荐
相关产品推荐

