linux服务器中的tomcat8.5报部署的项目导致内存泄漏_Kubernetes中gRPC Load Balancing分析和解决...

本文介绍了在k8s集群中,由于gRPC服务的长连接特性导致的负载不均衡问题,分析了问题的原因并提出了包括客户端负载均衡和服务网格在内的解决方案。同时,文中还涉及了内存泄漏的排查和解决,以及如何通过iptables和netfilter理解k8s的负载均衡机制。
摘要由CSDN通过智能技术生成

0af004962c1ed91573c88a4949d51f14.png

在k8s集群中部署gRPC服务并使用k8s中的Service来对外暴露服务,这是比较常见的用法,但是这种方式却会导致gRPC服务负载不均衡,进而影响整个系统的负载能力甚至‘雪崩’。


背景

第一次,线上遇到大量接口RT超过10s触发了系统告警,运维反馈k8s集群无异常,负载无明显上升。将报警接口相关的服务重启一番后发现并无改善。但是开发人员使用链路追踪系统发现,比较慢的请求总是某个gRPC服务中的几个POD导致,由其他POD处理的请求并不会出现超时告警。

第二次,同样遇到接口RT超过阈值触发告警,从k8s中查到某个gRPC服务(关键服务)重启次数异常,查看重启原因时发现是OOM KilledOOM killed并不是负载不均衡直接导致的,但是也有一定的关系,这个后面再说。前两次由于监控不够完善(于我而言,运维的很多面板都没有权限,没办法排查)。期间利用pprof分析了该服务内存泄漏点,并修复上线观察。经过第二次问题并解决之后,线上超时告警恢复正常水平,但是该 deployment 下的几个POD占用资源(Mem / CPU / Network-IO),差距甚大(参见后文)。

ed382072cec46720ff9dba3b322e02b4.png
OOM Killed (512MB)

171af5e1aa6e72b602602ce64fef6fcc.png
OOM Killed (1GB)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值