美文网首页
服务端问题排查与系统优化方法

服务端问题排查与系统优化方法

作者: Real_man | 来源:发表于2020-11-13 19:27 被阅读0次

    在面试时,必不可少的一项就是考察候选人的问题解决能力,如何排查XX问题?如何优化XX系统性能。会使用工具并不能体现不出大家的差别,出现问题时,谁能最快的定位问题与解决问题才能体现出技术水平,而只会问题排查还不够,再勤劳的救火队友也是没有实际业务上的产出,如何通过系统化的手段优化系统,让系统不再出现问题,那升职加薪指日可待。

    面试时,我一般会问:你在做项目的过程中有遇到过什么问题吗?一般是怎么解决的?

    如果回答是,我遇到了差不多XX问题,还有XX问题,那这种问题一般太偏向于一个点,而不够系统,相比对工作问题也没有很好的总结。

    我认为比较好的方式可以参考下面的文章回答,工作中大致遇到过那种类型的问题,一般的解决套路是什么,有哪些常见的问题解决工具。如果进一步谈到避免问题出现,进行系统上优化,取得了什么成效... 那基本上这个候选人就通过了.

    假如满分100分的话:

    • 只回答遇到问题的一个点: 50分
    • 回答大致有哪些类型的问题: 60分
    • 回答常见类型问题与如何应对:80
    • 回答常见类型问题,如何应对,以及排查工具:90
    • 回答到了不同的问题种类,应对方式,常用工具,以及优化手段:满分...

    问题排查

    日常工作中,可以尝试积累自己的一项问题清单列表,出现问题时依次检查此刻的问题能对应到清单中的那个问题上:

    • 逻辑错误: NPE,边界问题,死循环
    • 性能问题: RT陡增,吞吐量上不去,CPU飙高,负载过高
    • 内存问题:频繁FullGC,OOM,内存泄漏
    • 并发问题:分布式锁不生效,重复调用,超卖
    • 数据问题:脏数据,数据异常
    • 人为问题:配置错误,删库跑路...
    • ...

    需要自己平时做一些积累,遇到的错误进行记录与复盘,总结与梳理,到形成自己的一套问题列表,并且能进行针对性的解决。

    排查过程

    • 快速止血:回滚,开关,降级,重启,隔离
    • 保留现场:GCDump,ThreadDump
    • 定位原因:尝试复现问题,找到根本原因
    • 解决问题:

    排查工具

    日志:阿里云SLS,ELK,内部分布式日志系统

    监控:

    • 系统监控:CPU,内存,网络,硬盘。 一般在机器上安装agent收集机器信息
    • 调用链监控:Cat,EagleEye,Zipkin+Slueth。 分布式系统不同模块之间的调用链路追踪,定位问题系统
    • 业务监控:Prometheus,实时业务数据报表 。 和业务相关数据,一般系统服务的技术或业务人员关注

    问题定位:

    • Java自带工具:jps,jstack,jmap,jvivualvm,jconsole
    • Linux命令:top,tcpdump,iostat ...
    • Arthas
    • 现场日志

    系统优化

    快,稳,准:系统响应要快,系统运行要稳定,业务数据要准确

    一些指标:

    • 吞吐量:QPS/TPS 单位时间内能处理的请求数
    • 响应时间:RT 处理单个请求花费的时长,一般会由网络传输延迟、排队延迟和实际处理耗时几个部分共同组成。
    • 可伸缩性:增加机器来提升系统性能,理想情况下为线性伸缩

    性能优化与做功能需求一样,都是为业务服务的。优化之前想清楚,是否真的需要这次优化,性能优化都不是免费的午餐,优化做的越多,往往可维护性也会越差

    性能优化套路:从底层到每一行代码。层次划分明确,从不同的角度优化

    • 机器内核,JDK,依赖中间件 (参数调整,依赖升级)
    • 数据结构与算法优化,模型优化,批量,异步,并行等
      • 日志异步化;
      • 减少序列化和反序列化, 如果想要性能用set和get;
      • Java Stream 大对象、复杂操作尽量不要用;
      • 频繁的单次调用试着改为批量调用
    • 代码,流程精简,减少内存开销...

    稳定性优化:

    • 集群高可用,健康检查,分布式协议
    • 限流,降级,熔断,重试
    • 资源隔离,安全生产

    可维护性优化:《码出高效-阿里巴巴代码规范》

    • 编码规范
    • 代码重构
    • 技术演进

    最后

    如果能总结出一套自己的问题解决方法论,那就可以很快形成与别人拉开差距的核心竞争力,我也需要再对这方面多做一些思考与梳理。

    相关文章

      网友评论

          本文标题:服务端问题排查与系统优化方法

          本文链接:https://www.haomeiwen.com/subject/klebbktx.html