前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全链路压测如何排障调优 — 案例篇: 腾讯微服务平台TSF最佳实践

全链路压测如何排障调优 — 案例篇: 腾讯微服务平台TSF最佳实践

原创
作者头像
杨珂
修改2020-12-12 12:19:20
1.9K0
修改2020-12-12 12:19:20
举报

【微服务是什么】

微服务是一种架构模式,提倡将一个大型复杂的单体架构拆分成一个个微服务。服务内部是高内聚,服务之间是低耦合。

随着云原生的发展,kubernetes已经成为云上的操作系统,也为应用微服务化提供很好的底座。

【微服务框架】

做过开发的同学都知道,常用的后台模块有服务治理,网关,负载均衡,熔断等。而微服务框架就是把这些模块集成在一起,打包成一个全家桶。

常用的微服务框架有Spring Cloud,Service Mesh等,下面以Spring Cloud为例,来说明一个常用的流程:

  1. 请求统一通过API网关(Zuul)来访问内部服务
  2. 网关接收到请求后,从注册中心(Eureka)获取可用服务
  3. 由Ribbon进行负载均衡后,分发到后端具体实例
  4. 微服务之间通过Feign进行通信处理业务
  5. Hystrix负载处理服务超时熔断
  6. Turbine监控服务间的调用和熔断

腾讯微服务平台(Tencent Service Framework,TSF)是以腾讯云容器服务(Tencent Kubernetes Engine ,TKE)为底座,全面支持Spring Cloud,Service Mesh等主流框架,可以通过yaml文件方便接入,还能提供一个非常优秀的拓扑图,可以直观的看到流量的洪峰。

【微服务特点】

【压测问题汇总】

下面是实际项目进行上量压测的过程中遇到的问题,有非常强的实战经验。

【优秀案例实践】

下面以一个具体的案例,来讲讲腾讯微服务平台TSF是如何排查问题的。

【问题表现】

KA项目在生产环境进行全链路压测的过程中,发现某个接口的错误率很高。

时间段:20:34-20:39

错误率:7.17%,错误代码504(腾讯标准:错误率<=1%)

【排障思路】

整体排查思路请参考全链路压测如何排障调优 — 先导篇,主要从如下两个方面展开。

【查看机器负载】

1.首先要全链路查看机器负载,这里有必要推荐云监控,可以配置dashboard,以更好的视图查看机器负载。经排查,微服务所在所在的某个节点(10.0.112.25)CPU使用率高达100%,从凌晨01:22:00开始内存有断层,也没有收到相关告警。

2.想登陆到机器10.0.112.25上去看相关进程信息,看看是哪个进程占用CPU最高。无法登陆,登陆界面报filebeat相关的OOM。

3.既然无法登陆,只能通过kubernetes describe的命令查看Pod的状态。发现好多pod处于驱逐状态(Evicted),其原因是DiskPressure,表示可用磁盘空间很少。

4.根据上面的错误信息,我们发现系统盘太小,压测带来的压力一上来,日志量太多,就把节点打爆了。这个一方面需要有策略控制日志的量,比如只保留最近3天的日志;另一方面也是对系统盘进行扩容,挂载新的数据盘。

除了从机器负载去定位问题外,我们也从日志入手排查问题,也有一些收获。

【查看错误日志】

1.首先从TSF里面查看日志。微服务网关连接后面的服务(172.30.11.29:8891)超时,但看不到更多的信息。

2.为了能查看更多的日志信息,需要打开tomcat日志开关。重新编包部署后,有些容器一直重启失败。

3.排查集群的状态,发现有些Pod一直处于Terminating状态,报错DeadlineExceeded

Events:

Type Reason Age From Message

---- ------ ---- ---- -------

Warning FailedSync 3m (x451 over 2h) kubelet, 10.0.112.38 error determining status: rpc error: code = DeadlineExceeded desc = context deadline exceeded

4.集群报错DeadlineExceeded,一开始怀疑是docker 17版本的问题,因为之前TKE遇到类似的问题(更多TKE的问题请参考:K8S问题排查)。但查看当前运行版本,已经是docker 18版本。

5.没有办法,找了一台可以登录的节点机器,发现docker在内核被hang住。

6.最后找来TKE的研发参与排查,他们建议优化容器的OS。TKE Optimized CenOS7.6是基于tlinux定制的内核,有内部团队维护保障,也是TKE主推的OS。

除了升级OS,我们也把TSF agent的CPU和内存调大,保证了了日志正常上报,最终解决了问题。

一开始的默认配置比较小。

【后记】

docker在内核被hang住的问题,其实是应该深入分析。但因为没有当时的kdump文件,后面没有继续。

最后,底层原理是必备技能,调参是门艺术。上面说的内容可能都是错的,看看排查思路就好。

更多的案例,请订阅【云原生压测团队】后,慢慢欣赏。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【微服务是什么】
  • 【微服务框架】
  • 【微服务特点】
  • 【压测问题汇总】
  • 【优秀案例实践】
    • 【问题表现】
      • 【排障思路】
        • 【查看机器负载】
          • 【查看错误日志】
          • 【后记】
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档