【银河麒麟高级服务器操作系统】soft lockup软锁实例详细记录分析及处理建议

news2024/9/23 15:29:59

了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://documentkylinos.cn

现象描述

启nginx服务,但是报了softlock的错误,而且当时负载比较高,资源占用

现象分析

message日志分析

查看message日志,发现在问题发生时在CPU 3上运行的nginx进程触发了大量的soft lockup软锁报错。

查看这些soft lockup软锁日志信息,发现从11:17-13:03里出现的这三十多次软锁报错基本一致,下面选取11:17:28时第一次出现软锁报错的日志进行分析。

May 14 11:17:28 localhost kernel: [1712957.391935] watchdog: BUG: soft lockup - CPU#3 stuck for 22s! [nginx:2858164]

May 14 11:17:28 localhost kernel: [1712957.393937] Modules linked in: qax_tq_base(OE) binfmt_misc ipt_MASQUERADE nf_conntrack_netlink nfnetlink iptable_nat nf_nat_ipv4 xt_addrtype iptable_filter xt_conntrack nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 br_netfilter bridge stp llc overlay sunrpc vfat fat aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce sch_fq_codel ip_tables virtio_net net_failover failover virtio_gpu ttm virtio_console [last unloaded: qax_tq_base]

May 14 11:17:28 localhost kernel: [1712957.403317] CPU: 3 PID: 2858164 Comm: nginx Kdump: loaded Tainted: G           OE     4.19.90-17.ky10.aarch64 #1

May 14 11:17:28 localhost kernel: [1712957.405727] Hardware name: SmartX SMTX OS, BIOS 0.0.0 02/06/2015

May 14 11:17:28 localhost kernel: [1712957.407187] pstate: 60400005 (nZCv daif +PAN -UAO)

May 14 11:17:28 localhost kernel: [1712957.408391] pc : clear_page+0x10/0x24

May 14 11:17:28 localhost kernel: [1712957.409341] lr : __cpu_clear_user_page+0xc/0x18

May 14 11:17:28 localhost kernel: [1712957.410470] sp : ffff8003d655fb70

May 14 11:17:28 localhost kernel: [1712957.411351] x29: ffff8003d655fb70 x28: 0000000000000002

May 14 11:17:28 localhost kernel: [1712957.412656] x27: ffff8003cf72f360 x26: ffff8003d1f94f80

May 14 11:17:28 localhost kernel: [1712957.413956] x25: 0000ffff6f680000 x24: 0000ffff6f680000

May 14 11:17:28 localhost kernel: [1712957.415244] x23: ffff8003cf72f300 x22: ffff8003d9ce7710

May 14 11:17:28 localhost kernel: [1712957.416559] x21: ffff8003d655fc88 x20: ffff7fe000441700

May 14 11:17:28 localhost kernel: [1712957.417853] x19: 0000000000000000 x18: 0000000000000000

May 14 11:17:28 localhost kernel: [1712957.419165] x17: 0000000000000000 x16: 0000000000000000

May 14 11:17:28 localhost kernel: [1712957.420475] x15: 0000000000000000 x14: 0000000000000000

May 14 11:17:28 localhost kernel: [1712957.421774] x13: 0000000000000000 x12: 0000000000000000

May 14 11:17:28 localhost kernel: [1712957.423109] x11: 0000000000000000 x10: 0000000000000001

May 14 11:17:28 localhost kernel: [1712957.424453] x9 : ffff8003ffeb3ed8 x8 : 00008003f6e80000

May 14 11:17:28 localhost kernel: [1712957.425768] x7 : 0000000000000000 x6 : 0000000000000001

May 14 11:17:28 localhost kernel: [1712957.427096] x5 : 000000000000fffd x4 : 00008003f6e80000

May 14 11:17:28 localhost kernel: [1712957.428427] x3 : 0000000000000897 x2 : 0000000000000004

May 14 11:17:28 localhost kernel: [1712957.429751] x1 : 0000000000000040 x0 : ffff8001105c0000

May 14 11:17:28 localhost kernel: [1712957.431061] Call trace:

May 14 11:17:28 localhost kernel: [1712957.431732]  clear_page+0x10/0x24

May 14 11:17:28 localhost kernel: [1712957.432624]  wp_page_copy+0x514/0x6d0

May 14 11:17:28 localhost kernel: [1712957.433590]  do_wp_page+0x98/0x648

May 14 11:17:28 localhost kernel: [1712957.434476]  __handle_mm_fault+0x828/0xc10

May 14 11:17:28 localhost kernel: [1712957.435519]  handle_mm_fault+0x104/0x200

May 14 11:17:28 localhost kernel: [1712957.436520]  do_page_fault+0x210/0x508

May 14 11:17:28 localhost kernel: [1712957.437471]  do_mem_abort+0x3c/0xd0

May 14 11:17:28 localhost kernel: [1712957.438368]  el0_da+0x24/0x28

问题时间点首次触发soft lockup的内核日志如上所示,可以看到触发软锁的原因是CPU 3上nginx:2858164卡住22秒无响应。之后查看该软锁对应的call trace堆栈,可以看到此时nginx进程遇到了一个内存缺页异常,在进行写时复制处理时尝试清理内存页面内容,但该操作长时间未完成导致CPU 3长时间未响应触发软锁。

do_mem_abort //内存访问异常函数

->do_page_fault //直接处理页面错误的函数,包括分配新页面或从磁盘加载页面到内存等操作

->handle_mm_fault //用于用户空间内存访问错误的处理,__handle_mm_fault函数的上层调用

->__handle_mm_fault //内核处理内存管理故障的核心函数

->do_wp_page //处理写保护页面的函数

->wp_page_copy //写时复制(Copy-on-Write, COW)机制处理,当一个进程试图写入共享页面时,会触发此操作

->clear_page //用于清除页面的内容,通常作为页面分配或回收过程的一部分

从上述堆栈上来看这是一个正常的处理流程,进程触发内存缺页中断,并在处理写保护页时进行内存页清理处理。通常来说内存清理不会花费大量的时间,除非相关硬件存在问题或系统内存处于一个十分紧张的状态,一直无法得到一个可用的内存页。

内存使用情况分析

上面我们分析nginx应用触发软锁的原因,针对问题可能出现的原因,我们要去分析问题时间点的系统内存资源使用情况。

首先查看系统整体内存及min_free_kbytes参数情况,可以看到当前机器总内存为16143744KB,min_free_kbytes为802944KB。

查看问题时间点的sar日志,可以看到在5.14日的11:10后系统空闲内存突然下降到min水位线附近,available直接降至为0。从11:10-11:20这十分钟里系统内存就到了一个及其紧张的地步。

而查看这十分钟内存的一个内存使用变化,我们发现了一个十分奇怪的现象。在11:10时,系统的缓存cached、匿名内存anonpg、slab、free等参数加起来之和为15924576KB,和系统总内存大小基本一致。

但到了11:20时free和cached大幅度下降,anonpg、slab等内存却又没有明显上升。同样计算各类内存参数统计之和后发现仅有4338688KB,远小于总内存大小,大量内存突然异常消失。这应该就是导致nginx进程在触发缺页异常时一直无法清理得到一个可用内存页的原因。

内存异常消失情况分析

Linux kernel并没有滴水不漏地统计所有的内存分配,kernel动态分配的内存中就有一部分没有计入/proc/meminfo中。大量内存突然不知所踪,无法在各类内存统计项中找到,这个通常被称为内存黑洞或者内存幽灵现象。

由于黑洞内存无法直接找到,通常都是要根据历史经验并结合实际环境进行相关分析。当前环境已经重启,无法再追踪问题时间的相关信息。但这类问题通常都是由于驱动应用、硬件异常或是虚拟化环境宿主机异常导致。

例如华为hns3网卡驱动初始化会占用大量内存、VMware的balloon驱动会在宿主机内存紧张时直接挤占虚拟机内存,又或是物理机硬件、虚拟化环境异常导致虚拟化系统层无法获取相关内存状态。

本次问题环境查看为虚拟化环境,且是在运行了一段时间后才出现大量内存不知所踪,因此问题原因大概率在虚拟化平台。

建议排查虚拟机问题时间点进行的相关操作以及宿主机虚拟化平台状态。

总结

综上所述,本次服务器出现soft lockup的原因为nginx进程启动时进行内存缺页异常处理,在进行写时复制处理时尝试清理内存页面内容,但该操作长时间未完成导致CPU 3长时间未响应触发软锁。

查看soft luckup堆栈,这是一个正常的处理流程,进程触发内存缺页中断,并在处理写保护页时进行内存页清理处理。通常来说内存清理不会花费大量的时间,除非相关硬件存在问题或系统内存处于一个十分紧张的状态,一直无法得到一个可用的内存页。

分析问题时间点内存使用情况,发现在11:10-11:20中系统大量内存突然不知所踪,available直接变为0,free也来到min水位线附近。这就是导致上述nginx进程启动卡在clear_page函数的原因。

对于大量内存突然不知所踪,无法在各类内存统计项中找到这类内存黑洞现象,通常都是由于驱动应用、硬件异常或是虚拟化环境宿主机异常导致。建议排查虚拟机问题时间点进行的相关操作以及宿主机虚拟化平台状态。

备注

除了上述soft lockup问题外,服务器重启后nginx version: openresty/1.21.4.1应用在reload后就会一直有个进程shutting down,要等几分钟才能没有。

对该现象,由于应用并非麒麟方面适配的rpm应用,而是自行安装,无法确认应用编译、安装时是否存在问题。但nginx应用reload后进程出现shutting down状态本身是个正常现象。使用 reload重载nginx,这是一种平滑重启的方案,不会把已有的连接断掉,而是会继续维护已有连接的 nginx 进程,这些进程会进入worker process is shutting down 状态,直至其所有连接处理结束才会退出,退出之前这些shutting down 状态的worker不会处理新的连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebRTC协议下的视频汇聚融合技术:EasyCVR视频技术构建高效视频交互体验

视频汇聚融合技术是指将来自不同源、不同格式、不同网络环境的视频流进行集中处理、整合和展示的技术。随着视频监控、远程会议、在线教育、直播娱乐等领域的快速发展,视频数据的规模急剧增长,对视频处理能力和效率提出了更高要求。视频汇聚融合技术通过…

海外云手机实现海外社媒矩阵营销

如何利用社交媒体平台有效推广和带货,正成为众多企业和创业者关注的焦点。海外云手机解决各种网络和设备问题,成为跨境电商海外社媒矩阵建设的必备工具。 跨境电商的核心在于通过互联网连接不同国家的消费者与商品。社交媒体作为连接消费者与品牌的桥梁&…

vue nginx部署 配置 解决href = ‘/login路由‘ 跳转404问题

示例场景 <a :hrefthis.repDownloadUrl>下载平台</a><a href"/join" target"_blank">入驻平台</a><a href"/index" target"_blank" class"btn_login" style"color:#fff">nginx部署…

Datawhale X 李宏毅苹果书 AI夏令营 Task 2

课程内容 &#xff08;一&#xff09;术语解释 一 . Sigmoid函数与Hard Sigmoid 函数 &#xff08;1&#xff09;Sigmoid函数 Sigmoid函数&#xff0c;也称为逻辑函数&#xff08;Logistic function&#xff09;&#xff0c;是一种在数学、生物学、信息科学、神经网络等领域广…

【原子提交:IDEA实践】

原子提交&#xff1a;IDEA实践 背景先前情况idea实际操作方式一&#xff1a;Squash Commits方式二&#xff1a;Undo Commit 后再 Commit方式三&#xff1a;Resetpush前操作后悔药——回到squash commit之前&#xff1a; 背景 临近发版&#xff0c;某位老哥的个线上MR包含多个b…

YOLOv8环境搭建、创建数据集、训练推理教程(超级详细)

yolov8和yolov10 是一个流派&#xff0c;和yolov5区别还挺大&#xff0c;所以尝试使用yolov8来进行模型训练&#xff0c;下面是详细使用流程&#xff1a; 一、环境搭建 1.1 Anaconda安装 Anaconda是一个强大的开源数据科学平台,它将很多好的工具整合在一起&#xff0c;极大地…

怎么在CSDN上赚钱?

CSDN平台上有多种方式可以赚钱&#xff0c;以下是其中几种常见的&#xff1a; 写作赚钱&#xff1a;CSDN平台鼓励用户积极创作原创技术博客&#xff0c;通过博客的阅读量和转发量来获取广告收益&#xff1b;用户还可以发表付费文章或参与付费专栏&#xff0c;在文章的阅读量和付…

Flask+LayUI开发手记(六):树型表格的增删改查

树型表格的增删改查功能与数据表格的是完全一致&#xff0c;就是调用layui-form表单组件实现数据输入再提交&#xff0c;比较大的区别是树型节点的编辑&#xff0c;都需要有上级节点的输入&#xff0c;而这个上级节点的展示&#xff0c;必须是以树型方式展示出来。当然&#xf…

【Qt应用】Qt编写简易文件管理系统

目录 引言 一、准备工作 二、设计思路 三、创建项目和基本界面 四、目录浏览功能 实现效果 五、文件操作功能 5.1 设置添加文件与删除文件按钮 5.2 添加文件槽函数 5.3 删除文件槽函数 5.4 实现效果 六、文件搜索功能 6.1 准备工作 6.2 搜索按钮槽函数 6.3 实现…

[Algorithm][综合训练][合并k个已排序的链表][dd爱旋转][小红取数]详细讲解

目录 1.合并k个已排序的链表1.题目链接2.算法原理讲解 && 代码实现 2.dd爱旋转1.题目链接2.算法原理详解 && 代码详解 3.小红取数1.题目链接2.算法原理详解 && 代码实现 1.合并k个已排序的链表 1.题目链接 合并k个已排序的链表 2.算法原理讲解 &…

网络性能优化的几个思路

指标工具 工具指标 网络性能优化 总的来说&#xff0c;先要获得网络基准测试报告&#xff0c;然后通过相关性能工具&#xff0c;定位出网络性能瓶颈。再接下来的优化工作&#xff0c;就是水到渠成的事情了。 当然&#xff0c;还是那句话&#xff0c;要优化网络性能&#xff0…

Stable Diffusion majicMIX_realistic模型的介绍及使用

一、简介 majicMIX_realistic模型是一种能够渲染出具有神秘或幻想色彩的真实场景的AI模型。这个模型的特点是在现实场景的基础上&#xff0c;通过加入一些魔法与奇幻元素来营造出极具画面效果和吸引力的图像。传统意义的现实场景虽然真实&#xff0c;但通常情况下缺乏奇幻性&a…

前后端交互的路径怎么来的?后端解决cors问题的一种方法

背景&#xff1a;后端使用node.js搭建&#xff0c;用的是express 前端请求的路径baseURL怎么来的 &#xff1f; 前后端都在同一台电脑上运行&#xff0c;后端的域名就是localhost&#xff0c;如果使用的是http协议&#xff0c;后端监听的端口号为3000&#xff0c;那么前端请求…

MySQL将数据库所有表格和列编码格式从utf8mb3换成utf8mb4

最近在做数据导入&#xff0c;发现客户数据很多都带特殊符号&#xff0c;然后数据库就会提示 “java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x8C\xB8\xEF\xBC…’ for column ‘name’ at row 1”&#xff0c;看了一下数据库对应字段字符集是 utf8mb3 的&#…

<Python><AI>基于智谱AI免费大模型GLM-4-Flash的智能聊天程序

前言 智谱AI开放了一个免费使用的大模型GLM-4-Flash&#xff0c;官方也提供了python的示例程序&#xff0c;我们结合pyqt5来编写一个基于GLM-4的简单的智能聊天工具。 界面大致如下&#xff1a; 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&a…

Fedora koji构建系统详细教程之二 -- 构建

写在前面 本篇文章是上一篇文章的继续&#xff0c;由于koji里面的内容实在是太多&#xff0c;都塞进一篇文章里会显得很臃肿&#xff0c;于是我就拆成了两部分。在上一篇文章里&#xff0c;我们已经部署好了Fedora koji系统&#xff0c;此时kojihub已经运行、可以通过kojiweb或…

LavaDome:一款基于ShadowDOM的DOM树安全隔离与封装工具

关于LavaDome LavaDome是一款针对HTML代码安全和Web安全的强大工具&#xff0c;该工具基于ShadowDOM实现其功能&#xff0c;可以帮助广大研究人员实现安全的DOM节点/树隔离和封装。 在当今的Web标准下&#xff0c;尚无既定方法可以安全地选择性地隔离DOM子树。换句话说&#x…

这是不一样的svg图像优化哦。-可优化也可转换为组件

田间的风吹老了岁月&#xff0c;老舍笔下的茶馆写的是近代史&#xff0c;真的写尽了当时的苦态&#xff0c;可能现在的地铁写的是现代史吧。时光飞逝&#xff0c;很快就工作两三年了。昨天做项目的时候&#xff0c;引入svg图像转换为组件的时候&#xff0c;觉得很麻烦&#xff…

2.2 语言处理程序基础

以编译方式翻译C/C源程序的过程中&#xff0c;类型检查在&#xff08; &#xff09;阶段处理。 A. 词法分析 B. 语义分析 C. 语法分析 D. 目标代码生成 正确答案是 B。 解析 本题考查的是编译器工作过程。 A选项词法分析阶段处理的错误&#xff1a;非法字符、单词拼写错误等。与…

《王者荣耀》游戏玩法与部分机制分析

目录 游戏机制 MOBA核心玩法 匹配机制 游戏模式 隐藏分机制 游戏规则 总结 王者荣耀的ELO匹配机制是如何具体工作的&#xff1f; 王者荣耀中隐藏分机制的详细规则是什么&#xff1f;&#xff08;难绷&#xff01;&#xff09; 王者荣耀边境突围和五军对决模式的具体玩…