我们被一个 kong 的性能 bug 折腾了一个通宵

在升级Kong到2.2.0版本后,我们遭遇了一个严重的问题:调用admin接口时,Kong实例内存持续上涨,甚至触发worker OOM,影响业务性能。尝试参数调优、数据清理、读写分离和迁移RDS等措施无效。通过复现问题,我们确定是Kong内部LRUCache未正确释放导致的内存泄漏,此问题在最新版本中依然存在。解决方案是限制route/service数量并增大Kong Pod内存。
摘要由CSDN通过智能技术生成

故事背景

在 Erda 的技术架构中,我们使用了 kong 作为 API 网关的技术选型。因其具备高并发低延时的特性,同时结合了 Kubernetes Ingress Controller,基于云原生的声明式配置方式,能够实现丰富的 API 策略。

在我们最早交付的集群中,kong 还是较为早期的 0.14 版本,随着业务层面对安全的要求日益趋增,我们需要基于 kong 实现安全插件,帮助系统能够具备更好的安全能力。由于较为早期的 0.14 版本不能使用 go-pluginserver 来扩展 kong 的插件机制,我们不得不在古老的集群中将 kong 升级为相对较新的 2.2.0 版本。

升级过程就不在此赘述了,基本就是照着官方文档一步步顺利的升级上去,但是在升级上去之后的几天里,我们的 SRE 团队收到了非常密集的咨询甚至是声讨,部署在该集群上的业务间歇性的无法访问,延迟非常高

一系列失败的尝试

参数调优

最开始为了快速修复这个问题,我们对 kong 的 NGINX_WORKER_PROCESSESMEM_CACHE_SIZEDB_UPDATE_FREQUENCYWORKER_STATE_UPDATE_FREQUENCY 参数以及 postgres 的 work_memshare_buffers 都进行了适当的调优。

但是,没有任何效果 😓。

清理数据

由于这个集群的历史原因,会频繁的注册或者删除 api 数据,因

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值