大厂线上接口排障常用技巧
《大厂线上接口排障常用技巧》共 0.6 万字,通篇围绕 日志、监控、数据库、吞吐 展开,归在「后端与系统架构」这一层。
适合给 AI 系统搭底座、要管得住的人
目录骨架(5 节)
- 1 定位问题
- 2 压测监控核心指标
- 3 链路追踪
- 4 问题排查
- 5 垃圾回收
分享内容
- 定位问题
- 压测监控核心指标
- 链路追踪
- 问题排查
- 垃圾回收
1 定位问题
1.1 慢查询日志
通常情况下,为了定位 sql 的性能瓶颈,我们需要开启 mysql 的慢查询日志。把超过指定时间的 sql 语句,单独记录下来,方面以后分析和定位问题。
开启慢查询日志需要重点关注三个参数:
- slow_query_log 慢查询开关
- slow_query_log_file 慢查询日志存放的路径
- long_query_time 超过多少秒才会记录日志
通过 mysql 的set命令可以设置:
set global slow_query_log='ON';
set global slow_query_log_file='/usr/local/mysql/data/slow.log';
set global long_query_time=2;
设置完之后,如果某条 sql 的执行时间超过了 2 秒,会被自动记录到 slow.log 文件中。
当然也可以直接修改配置文件my.cnf
[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 2
但这种方式需要重启 mysql 服务。
1.2 监控
可观测性帮助企业在复杂的分布式系统中更加快速的排查、定位问题,已经是分布式系统中必不可少的运维工具。
可观测性从传统监控场景不断延伸,逐渐覆盖 Metrics、Traces、Logs 三个维度并将之相互融合。在性能压测领域中,可观测性更为重要,除了有助于定位性能问题,其中 Metrics 性能指标更直接决定了压测是否通过,系统最终是否可以上线,具体如下:
- Metrics - 监控指标
系统性能指标,包括请求成功率、系统吞吐量、响应时长
资源性能指标,衡量系统软硬件资源使用情况,配合系统性能指标,观察系统资源水位
- Logs - 日志
施压引擎日志,观察施压引擎是否健康,压测脚本执行是否有报错
采样日志,采样记录 API 的请求和响应详情,辅助排查压测过程中的一些出错请求的参数是否正常,并通过响应详情,查看完整的错误信息
- Traces - 分布式链路追踪
用于性能问题诊断阶段,通过追踪请求在系统中的调用链路,定位报错 API 的报错系统和报错堆栈,快速定位性能问题点。
2 压测监控核心指标
压测过程中,对系统硬件、中间件、数据库资源的监控也很重要,包括系统性能指标、资源指标、中间件指标、数据库指标、前端指标、稳定性指标、批量处理指标、可扩展性指标、可靠性指标等。
2.1 系统性能指标
2.1.1 交易响应时间
定义 :响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。在性能检测中一般以压力发起端至被压测服务器返回处理结果的时间为计量,单位一般为秒或毫秒。平均响应时间指系统稳定运行时间段内,同一交易的平均响应时间。一般而言,交易响应时间均指平均响应时间。
简称 :Response Time: RT
参考标准不同行业不同业务可接受的响应时间是不同的
- 互联网企业:500 毫秒以下,例如淘宝业务 10 毫秒左右
- 金融企业:1 秒以下为佳,部分复杂业务 3 秒以下
- 保险企业:3 秒以下为佳
- 制造业:5 秒以下为佳
- 时间窗口:即整个压测过程的时间,不同数据量则时间不一样,例如双 11 和 99 大促,数据量级不一样则时间窗口不同。大数据量的情况下,2 小时内可完成压测
2.1.2 系统处理能力
定义 :系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力。系统处理能力通过系统每秒钟能够处理的交易数量来评价,是技术测试活动中重要指标
简称一般情况下,用以下指标来度量:
- HPS(Hits Per Second) :每秒点击次数,单位是次 / 秒
- TPS(Transaction per Second):系统每秒处理交易数,单位是笔 / 秒。
- QPS(Query per Second):系统每秒处理查询次数,单位是次 / 秒。对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表示对服务器单击请求
