专栏首页Coder的技术之路实战排查由于系统负载引起的服务响应异常

实战排查由于系统负载引起的服务响应异常

文章出自本人公号,欢迎关注,后台提供高并发系列历史文章整理版下载

服务为啥突然超时了

从大方面说基本上就是两类,一类是链路出了问题,包括网络抖动,链路环中的某一节点抖动等。另一类是服务本身的问题,包括服务器自身问题如磁盘老化等,还有代码bug造成的服务等待或服务器负载问题。

对第一类问题比较好发现,看监控,查异常超时日志,总会发现端倪,但是对第二类场景就不那么容易定位了,但基本上有一个排查的套路。

系统负载

WIKI: the system Load is a measure of the amount of work that a compute system is doing

啥意思,就是衡量计算机这个时候正在做多少事,是不是忙不过来了~

那么,怎么判断当前系统是否已经过载了呢对一般的系统来说,Load平均值要小于CPU的数量;好在linux足够的强大,有强大的命令来支撑排查问题。

问题排查

「top」看整体表现

可以看出,系统负载确实出现了问题

load average : 77 78 65

对于我们的32cpu的机器来说,已经过载

Tasks行 zombie=0,还好没假死进程;

Cpus行,wa=73.3 居然这么高,IO的问题要重点看

Swap行,交换区使用了一半多,也不低

有的同学说,是swap的原因,内存不够,导致物理内存与swap分区发生置换引起的过载,那么到底是不是这个原因呢。

「vmstat 3」看性能指标

每3秒捕捉一次性能指标,重点看si 和 so 的数值,「si是由内存进入内存交换区的数量;so是由内存交换区进入内存的数量」。如果两个值长时间都是0,即使swap的值很大,其实系统也是可以认为是正常的。

观察发现,其实swap的指标还算正常,那swap还不是最终的原因。

「iostat -x 1 5」看IO

我的天,都不用看读写的指标,直接看最后一个util,居然每次都达到了100往上,IO满负荷运行啊。

系统运行队列基本都被IO占领,肯定会过载了。那就重点排查在这个时间点附近有过上线的代码,果然,由于代码原因导致正排倒排域全部暴涨,写索引的也随之暴涨。回滚代码,恢复正常。

福利环节,恢复了就完了么?

顺便把负载相关的命令和指标理一遍不好么

「top」命令

在top命令下按1 ,可以看到分cpu的指标展示。

在top命令下,按shift + "c",则将进程按照CPU使用率从大到小排序。

在top命令下,按shift+"p",则将进程按照内存使用率从大到小排序,可以定位出哪些服务占用了较高的CPU和内存。

「vmstat 1 」命令

摘自大神总结: CPU: r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。 b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。cpu 表示cpu的使用状态 us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时, 说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%, 如果us+sy 大于80%说明可能存在CPU不足。 wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%, 如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的, 也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 id 列显示了cpu处在空闲状态的时间百分比 system 显示采集间隔内发生的中断数 in 列表示在某一时间间隔中观测到的每秒设备中断数。cs列表示每秒产生的上下文 切换次数,如当cs比磁盘I/O和网络信息包速率高得多,都应进行进一步调查。 memory swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0, 或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 free 当前的空闲页面列表中内存数量(k表示) buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大, 说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap si 由内存进入内存交换区数量。 so由内存交换区进入内存数量。 IO bi 从块设备读入数据的总量(读磁盘)(每秒kb)。 bo 块设备写入数据的总量(写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑 均衡磁 盘负载,可以结合iostat输出来分析

本文分享自微信公众号 - Coder的技术之路(gh_1b3189982966),作者:Coder的技术之路

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是高并发架构?

    TPS(每秒事务数):每秒钟可以处理的事务(请求响应),大概的计算公式为:并发数/每秒响应时间=TPS

    kubernetes中文社区
  • 日志分析的那些挑战

    计算机的系统日志提供了对正在运行的系统状态的描述。日志的内容和格式在不同的系统之间,甚至在系统中的不同组件之间都可能有着很大的不同。硬件的驱动程序可能生成指示与...

    半吊子全栈工匠
  • 服务集成时需避免的两个错误

    随着面向服务架构(下文简称 SOA,Service Oriented Architecture)的出现,企业通过将业务功能分解为多重服务 [1],它们迅速地从整...

    Techeek
  • 群众吃一个瓜,可能就有一堆DBA要掉头发

    前阵的微博热搜,各种大瓜接踵而来,数据君就像一个瓜田里的猹。 最魔幻的当数22号,前有弃养上热门,后来北京网易员工核酸检测阳性又上热搜,全员下班,隔壁的新浪员...

    腾讯云数据库 TencentDB
  • 2018年微服务的5个发展趋势

    原文地址:https://medium.com/memory-leak/5-microservices-trends-to-watch-in-2018-aed1...

    双愚
  • 可扩展的Web架构和分布式系统(翻译)

    原文:Scalable Web Architecture and Distributed Systems

    程序员小王
  • 分布式系统之负载均衡(案例篇)

    负载均衡算法是一种将数据流量按需分配给服务器去响应的算法,通常有简单轮询、加权轮询、粘性Session(一致性哈希)、最少连接数等等算法,本文不会讲解这些算法的...

    公众号_松华说
  • 运维可用性能力建设

    业务的不断演进,系统的数据量不断扩大,技术栈越来越复杂,系统模块越来越多,造成信息系统中断的事件的风险场景越来越多,中断事件的频率和种类持续增长,且有相...

    彭华盛
  • 大型网站系统与 Java 中间件实践

    第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅通过消息传递来通信并协调行动。 分布式系统的意义: 升级单机处理能力的性价比越来越...

    Java高级架构
  • 游戏服务器架构:游戏服务端高并发和高可用,怎样支持百万玩家同时在线,不出问题

    用通俗的方法来描述一个好的服务端架构,最基础也是最重要的就两点: 支持百万玩家同时在线,不出问题 。这两点也就分别对应了高并发和高可用。

    用户3479834
  • 全面复盘台风“山竹”应急保障

    2018年9月16日,今年第22号超强台风“山竹”经过整整13天的酝酿之后,形成了中心风力高达18级以上的巨无霸,携带着狂暴的超能量由西太平洋北上,正面侵袭粤港...

    腾讯数据中心
  • 苏宁的Node.js实践:不低于Java的渲染性能、安全稳定迭代快

    苏宁的技术架构,由苏宁云、基础支撑、后台、中台和前台组成。苏宁云主要为业务开发提供云服务。基础支撑,包括数据连接协议、防火墙、日志、中间件、短信等。在苏宁云和基...

    五月君
  • 科技战“疫”,Rainbond助力咸阳市疫情管控应用快速交付,支撑大并发

    咸阳市大数据管理局是咸阳市政府下属机构,负责咸阳全市信息化建设、大数据管理和信息网络运行维护等工作。2019年,咸阳大数据管理局以Rainbond为基座,建设咸...

    Rainbond开源
  • 赛题解析:如何设计和实现自适应的负载均衡

    在现代分布式应用中,服务请求是由物理机或虚拟机组成的 server 池进行处理的。 通常,server 池规模巨大且服务容量各不相同,受网络、内存、CPU、下游...

    用户5397975
  • 有赞业务对账平台的探索与实践

    根据 CAP 原理,分布式系统无法在保证了可用性(Availability)和分区容忍性(Partition)之后,继续保证一致性(Consistency)。我...

    有赞coder
  • 如何使用 K8s 两大利器"审计"和"事件"帮你摆脱运维困境?

    张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验。目前主要负责腾讯云容器服务 TKE 集群和运维中心开发工作。 概述 下面几个问题,相信广大 K8s...

    腾讯云原生
  • 后端架构师技术图谱

    转自: GitHub/architect-awesome , 大体结构如下(更新时间: 2018-06-22)

    用户1216491
  • 【微服务干货系列】微服务性能模式

    Rainbond开源
  • 大数据:美团酒旅实时数据规则引擎应用实践

    美团点评酒旅运营需求在离线场景下,已经得到了较为系统化的支持,通过对离线数据收集、挖掘,可对目标用户进行T+1触达,通过向目标用户发送Push等多种方式,在一定...

    用户5265382

扫码关注云+社区

领取腾讯云代金券