当前位置: 首页 > news >正文

【银河麒麟服务器操作系统】系统夯死分析及处理建议

了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn

服务器环境以及配置

【机型】物理机

处理器:

Intel

内存:

512G

整机类型/架构:

X86_64

【内核版本】

4.19.90-25.26.v2101.ky10.x86_64

【OS镜像版本】

银河麒麟Kylin-Server-10-SP2-Release-Build09-20210524-x86_64

【第三方软件】

TDSQL

现象描述

服务器在13:40左右发生夯死现象。初步排查系统日志,发现系统日志记录了oom问题,但是当时并没有重启系统,系统cpu急剧增加,最终系统夯死。数据库已提供数据库层面分析报告,需要系统层面再进行问题分析排查。

问题分析

分析系统日志,已知,系统重启时间为2024-03-11 15:18:23,故障时间在2024-03-09 13:46:32左右,如图1和图2:

图1

图2

分析系统性能日志,可以看到,2024-03-09 13:10到13:41分钟左右这个时间段内,CPU  %system使用率异常高,表示 CPU 在内核运行的时间多,包括 IRQ 和 softirq。系统CPU占用越高,表明系统某部分存在瓶颈。如图3:

图3

分析系统CPU性能情况和负载,可知,故障时间内,系统负载比较高。在每秒创建的进程数(proc)不多的情况下,每秒cswch自愿上下文切换的次数也很高,说明I/O、内存等系统资源不足。如图4和图5:

图4

图5

分析内存使用情况,可知,故障时间段内,系统物理内存使用率正常,未到50%。但是,查看内存交换swap,可以看到每秒从交换分区到系统的交换页面和每秒从系统交换到swap的交换页面数量异常增多,已经频繁使用到swap内存交换分区。如图6和图7:

图6

图7

分析系统磁盘IO使用情况,可知,故障时间段内,tps(每秒IO总数)和磁盘IO读写都有明显较大增量。查看磁盘具体IO读写情况,发现,磁盘设备dev8-0(sda)和dev253-1(swap)的%util占比高,说明I/O请求占用CPU多。如图8和图9:

图8

图9

查看vm.swappiness内核参数,已设置为0,表示最大限度使用物理内存,然后才是swap空间,配置,如图10:

图10

分析结果

综上,系统层分析过程,得出,此次系统夯住的原因,是swap内存交换分区异常使用,导致%system系统CPU使用率99%,无法正常分配使用CPU资源。

后续计划与建议

建议,下次遇到此故障情况,观察swap内存交换分区使用情况,排查异常占用swap的具体进程,再进一步分析。

swap进程占用,排查方法如下:

  1. 获取到的占用swap空间的进程,在当前目录下生成swap.log文件里查询

# for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr > ./swap.log

  1. 第一列PID 第二列 swap空间占用大小 由高到低排序

# cat ./swap.log

  1. 查询下是哪个服务占用的

# ps aux | grep pid(swap占用高的)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java基础(十九):集合框架
  • 每天一个数据分析题(四百二十六)- 总体方差
  • 动态模型管理:Mojo模型的自定义保存与加载控制
  • hutool处理excel时候空指针小记
  • Windows下编译OpenSSL静态库
  • 华为机试题-单车道汽车通行时间-Java
  • CentOS6用文件配置IP模板
  • 东软“引战”国家队 通用技术“补链”大国重器
  • 分类模型的算法性能评价
  • 如何设计一个C语言面向结构体的内存数据库
  • 政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署MuseV (踩完了所有的坑):基于视觉条件并行去噪的无限长度和高保真虚拟人视频生成
  • 简谈设计模式之代理模式
  • 五、 计算机网络(考点篇)
  • 走进linux
  • C语言 | Leetcode C语言题解之第230题二叉搜索树中第K小的元素
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android开源项目规范总结
  • CEF与代理
  • CentOS6 编译安装 redis-3.2.3
  • ES6 ...操作符
  • GraphQL学习过程应该是这样的
  • leetcode-27. Remove Element
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 如何解决微信端直接跳WAP端
  • 深入浅出webpack学习(1)--核心概念
  • 使用SAX解析XML
  • 说说动画卡顿的解决方案
  • 新书推荐|Windows黑客编程技术详解
  • 用element的upload组件实现多图片上传和压缩
  • 《天龙八部3D》Unity技术方案揭秘
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • # Kafka_深入探秘者(2):kafka 生产者
  • %check_box% in rails :coditions={:has_many , :through}
  • (0)Nginx 功能特性
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (二)构建dubbo分布式平台-平台功能导图
  • (每日一问)基础知识:堆与栈的区别
  • (十五)使用Nexus创建Maven私服
  • (数据结构)顺序表的定义
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 的程序集加载上下文
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NetCore 如何动态路由
  • .NET序列化 serializable,反序列化
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @Pointcut 使用
  • @SentinelResource详解
  • @staticmethod和@classmethod的作用与区别
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [2010-8-30]