微服务如何快速定位问题以及优化

69 阅读3分钟

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第n篇文章,点击查看活动详情

微服务如何快速定位问题以及优化

概述

最近几年微服务可谓是炙手可热,比传统的应用程序更有效地利用计算资源,它们更快且更容易更新等优势被广大科技公司喜爱,然而也存在一些问题:最为典型的就是交易链路变长,问题难以定位;部署单元增多,日志过于分散,查询难度大。在工作中也对这些问题做了总结,分享出来。

在压力测试时发现某个功能的TPS就是上不去,响应时间也很长

单体应用定位问题相对简单:找到其对接的后台接口,以此为入口来排查代码。 但如果是微服务,它的调用链路可能是这样的,通过页面只能定位到bond-depo的接口方法,后面一大溜怎么定位?

可以通过链路监控在快速定位性能较慢的节点(服务)

可以使用配套的微服务工具来解决,事半功倍

日志管理就是指对系统和应用程序产生的日志进行处理的方法,包括对日志进行统一收集,对日志数据进行筛选和解析,统一存储,还可以让它们方便被检索。

  • 首先,日志进行集中式管理后,就可以方便对所有日志进行统一的检索

当所有日志都可以放在一起检索了,自然就能高效地定位到问题,而不再需要到各个应用程序的日志里面去分别检索。

同时在检索的方式上,可以用类似于 Sql 语句的方式来检索,高效地对结果进行查询和归类。

  • 然后,对日志进行集中式管理后,可以通过图表直观地看到应用运行情况

当所有的应用实时将日志传输到一起,日志管理系统就可以根据应用日志中记录的信息,动态地生成图表,实时看到应用运行的情况。

举例来说,某一个api服务接口,日志信息记录了每一次 Http 请求的状态、耗费时间等信息。

127.0.0.1 [10/Oct/2022:13:55:36 -0700] "GET /api HTTP/1.1200 2326 0.038
1

那么把这些信息统一收集、实时统计的话,就可以随时看到单位时间内,这个 API 错误率有多少,平均耗时多久,从而可以根据这样的信息生成实时的图表,方便查看当前 API 服务的运行情况。

  • 最后,可以根据日志的数值设置规则自动报警

对于这些从日志中实时分析出来的数据结果,如果设置好相应的阈值,在超过阈值后,比如说 API 错误率超过 10%,或者 90% 的API 请求时间超过 1 秒,就会自动触发报警,通知相关的开发人员进行维护。