现象
系统的商户端出现响应慢,加载慢的问题
- 关于慢调用问题
可能带来的危害包括:
前端业务维度:首先慢调用可能会引起前端加载慢的问题,前端加载慢可能会进一步导致应用卸载率高,进而影响品牌的口碑。
项目交付的维度:由于接口慢导致达不到 服务质量目标,进而导致项目延期。
业务架构稳定性:当接口调用慢时,非常容易引起超时,当其他业务服务都依赖这个接口,那么就会引发大量重试,进而导致资源耗尽,最终导致部分服务或者整个服务不可用的雪崩的现象。
问题排查
先排查下其他端是否也存在慢响应等问题,发现加载正常
检查网关日志(orange),发现有大量
status:499
。关于status code 499, client has closed connection
代表客户端主动断开了连接,一般是服务端处理时间太长了,客户端等不了就断开了
还有一种情况就是有人攻击,故意消耗服务端资源。
说明网关下游服务响应时间过长,网关路由到app_tenant
服务
此时怀疑是不是因为
app_tenant
服务占用cpu过多,导致将节点cpu打满(目前app_tenant服务并没有限制cpu的resource)

app_tenant
服务所在节点


节点 CPU 打满会带来什么样的问题呢?节点 CPU 打满之后,Pod 可能没办法申请到更多 CPU,导致里面的线程都处于等待调度的状态,进而导致慢调用。

1 | [root@VM-30-197-centos datadisk0]# kubectl top pods -n sopei-biz|sort -nrk 2 |
基本都是1s以上,有甚者10s以上

发现耗时并不是
app_tenant
导致,而是下游sapi
层,而sapi
层仅负责数据库操作,响应这么慢就需要考虑数据库层面问题
- 通过traceId排查sql日志,发现都是最近在排查的慢sql,但今天格外的多(腾讯云数据库管家却没显示慢sql,好像有延迟)

问题点整理
- 目前确定问题点在
sapi
层,且存在着较多慢查询,需要改进慢sql查询 app_tenant
服务存在吃cpu现象,需考虑hpa
2023-03-06更新
此次商户端出现慢调用问题后进行了同样的排查,发现问题不是出自sapi层,在此记录问题排查过程
首先由客成人员报出系统响应慢,整个过程持续了大概10分钟之久,随即按照之前的排查流程进行梳理
- 先去核查app_tenant服务的资源占用,发现在11:00到11:08左右cpu激增

- 再去查看网关日志,发现499错误确实持续了10分左右

- 然后顺着traceID去查链路日志,发现每个模块都是很快就返回了,那么就可以排除是慢查询导致了

目前的处理办法是将这几分钟报出问题的接口进行review统一排查,之后整合Prometheus进行堆栈信息监控,排查问题会方便些
补堆栈信息监控
:
