系统运维工具KSysAK——让运维回归简单
系统运维工具KSysAK——让运维回归简单
1.基本信息
1.1概述
系统异常定位分析工具KSysAK是云峦操作系统研发及运维人员总结开发及运维经验,设计和研发的多个运维工具的集合,可以覆盖系统的日常监控、线上问题诊断和系统故障修复等常见运维场景。
工具的整体设计上,力图让运维工作回归简单,让系统运维人员不需要深入了解内核就能找出问题的所在。
系统运维工具按功能划分可分为监控和诊断模式:
-
系统监控:针对各种系统资源(CPU、内存、网络、文件 IO、内核管理结构等)提供更精细化的资源监控,帮助业务运维实现细粒度的运维调度,高效运用资源。
-
系统诊断:诊断的典型问题如负载异常、网络抖动、内存泄漏、IO毛刺、性能瓶颈、应用异常等,针对性的提供工具,同时尽量减少工具的专业性,让用户更易使用和解读。
而为了实现以上功能,并能够为用户提供简单易用操作界面,系统运维工具KSysAK提供了多个子工具,着重解决不同场景下的监控数据的采集、统计及数据诊断。
1.2环境详解
IP地址:100.2.93.133
架构:x86_64
类型:虚拟机
操作系统版本:KOS5.8-sp1
内核版本:4.19.91-27.4.7.kos5.x86_64
KSysAK版本:1.3.0
用户名:root
密码:123456a?
1.3工具
分类 | 工具名称 | 备注 |
---|---|---|
内存泄露memleak | test_page_leak.ko | 模拟page泄露的工具 |
test_slab_leak.ko | 模拟slab泄露的工具 | |
test_vmalloc_leak.ko | 模拟vmalloc 泄露的工具 | |
延迟抖动runlatency | testrunlatency | 模拟进程运行延迟情况 |
Linux内核内存泄漏检测
内核内存泄漏是指在Linux系统中,由于代码中的错误或缺陷,分配给内核的内存未能被正确释放而导致的问题。这可能会导致系统性能下降,最终耗尽系统的可用内存,甚至导致系统崩溃。下面我将介绍一些在Linux系统中检测和解决内核内存泄漏的方法:
Linux内核内存分配有几种不同的机制,其中包括slab、page和vmalloc。
ksysak memleak内存泄露检测工具,包含以下几个步骤:
-
集成到项目中:将ksysak memleak的内存泄漏检测代码集成到需要检测的项目中。这通常涉及将检测代码插入到项目的适当位置,以确保能够准确追踪内存分配和释放情况。
-
编译和运行项目:使用适当的编译选项编译项目,并确保项目成功编译。然后运行项目,让其正常执行一系列操作,包括内存的申请和释放。
-
收集内存泄漏数据:在项目运行期间,ksysak memleak将记录内存分配和释放的详细信息。这些数据包括每次内存分配的调用堆栈、分配大小、分配位置等。收集这些数据用于后续的内存泄漏分析。
-
分析内存泄漏数据:使用ksysak memleak提供的分析工具,对收集到的内存泄漏数据进行分析。这可以帮助识别潜在的内存泄漏源头、内存泄漏的大小以及泄漏发生的位置。通过这些信息,开发人员可以准确地定位问题并采取相应的修复措施。
-
修复内存泄漏:一旦通过分析工具确定了内存泄漏的位置和原因,开发人员就可以修复这些问题。修复可能涉及修改代码以确保正确释放内存、修复内存管理逻辑的错误等。在修复后,可以重新运行项目并使用ksysak memleak进行验证,确保内存泄漏问题已得到解决。
需要注意的是,ksysak memleak是一种基于宏调用的内存泄漏检测工具,它可能会对项目性能产生一定的影响。因此,在使用ksysak memleak进行内存泄漏检测时,建议仅在开发和调试阶段使用,并在完成内存泄漏修复后将其从项目中移除,以确保项目的性能和稳定性不受影响。
2.1 page内存泄露检测
执行ksysak memleak -t page -i 80启动检测page内存泄露程序,运行80s(若来不及执行检测程序则可以延长时间)
2.2 slab内存泄露检测
执行 slabtop 命令以查看当前系统的 Slab 使用情况
执行 cat /proc/slabinfo 命令,获取更详细的 Slab 缓存信息。
使用perf工具跟踪内核中的 Slab 分配和释放操作
执行ksysak memleak -t slab -i 80检测启动slab内存泄露检测程序,运行80s(若来不及执行检测程序则可以延长时间)
OS 异常分析
OS异常分析是操作系统中的一种重要技术,用于处理在程序运行过程中发生的异常情况。当程序执行时遇到某些无法处理的错误或特殊情况时,操作系统会通过异常处理机制来响应,以保护系统的稳定性和安全性。
3.1系统巡查
执行#ksysak ossre_client -d 可扫描日志文件查看系统运行过程中的所有异常信息。
等等异常信息
检测系统中延迟抖动
服务器操作系统运行过程中,对应用运行的干扰源可能会很多,但干扰不一定会对业务造成影响,所以至少需要包含这些干扰源的频率和运行时间,来评估是否是关键因素。
至少需要包括以下干扰源的统计:
-
设备硬件中断 如果在业务运行过程中,某一类中断频率过高或者集中到某个 cpu,或者单次运行过长,那么都可能会影响到业务的性能,可以对中断进行打散绑定等操作观察效果。
-
系统定时中断 系统定时器过多,也可能会对业务的唤醒造成延迟,通常可以分析业务进程是否有大量的使用高精度定时器。
-
软中断 可能是网络流量是否有突发增加等。
Runlatency 作为系统运维工具KSysAK的一个子工具,用于诊断系统中可能影响应用运行延迟抖动的地方并输出延迟因素。其内核中监控影响进程调度的延时因素(关中断、长时间不调度、运行队列长)。可监控整个系统或单个进程的中断和调度信息,监控的数据包括:
进程/线程调度延迟,比如运行队列挤压、排队时间过长以及高优先级应用抢占或本身调度策略设置不合理。
中断和软中断响应不及时,业务运行过程会依赖于中断和软中断执行过程,包括网络收发包、IO 读写等。因此可以分析关中断时长来判断中断的响应时间。
内核态执行过长:包括系统本身存在的瓶颈以及内核里其他资源竞争等情况。
4.1检测系统中延迟抖动
执行系统延迟抖动模拟程序 testrunlatency.python (在/root)
执行ksysak runlatency -e 启动延迟抖动监控
执行 ksysak runlatency -r ./out , 将监控数据输出到out目录下
执行ksysak runlatency -d 关闭监控
查看out目录下的输出结果如下:
nosch, hard, soft 类型的延迟信息,所属CPU,进程id,延时时间, 命令行,堆栈信息等。
使用curl用于测试Web应用的响应和时间,较小的延迟时间通常表示系统或服务能够更快地响应用户的请求
产品总结
KSysAK是一款多个运维工具集合的“结晶”,它可以大大提高运维人员的工作效率,其主要功能是系统的日常监控、线上问题的诊断和系统故障修复,对于系统的检测非常的详细,该产品的主要特点是覆盖面广,使用不受限,这大大体现了产品的实用和广泛性,让运维工作回归简单,让系统运维人员不需要深入了解内核就能找出问题的所在,非常方便!
总体来说,不管是对用户个人还是在岗的工作人员,这款工具一当之无愧的,但是在某些方面还是可以再优化的,例如:
-
可以增强定制化:工具应该允许用户更细粒度地定制模拟泄漏的场景。比如,用户应该能够指定泄漏的大小、速度、以及泄漏发生的位置。
-
详细的报告:工具应该生成详细且易于理解的报告,以帮助用户识别和解决内存泄漏问题。报告应该包括泄漏的大小、位置、以及可能的解决方案。
-
实时检测和警报:工具应该能实时监测内存泄露,并在发现潜在问题时向用户发出警报,这样有助于在问题严重前及时解决问题。
还可以做一个可视化界面,对于很多用户来说,命令行可能不爱看,或者说有点复杂,一个直观的用户界面将有助于用户更方便地使用这些工具。
最后,为了确保这些工具的有效性和准确性,建议定期进行质量测试和验证。这样可以确保它们在不同场景和配置下都能可靠地工作。
相关文章:

系统运维工具KSysAK——让运维回归简单
系统运维工具KSysAK——让运维回归简单 1.基本信息 1.1概述 系统异常定位分析工具KSysAK是云峦操作系统研发及运维人员总结开发及运维经验,设计和研发的多个运维工具的集合,可以覆盖系统的日常监控、线上问题诊断和系统故障修复等常见运维场景。 工具…...

NowCoder | KY11 二叉树遍历
NowCoder | KY11 二叉树遍历 OJ链接 简单来说就是构建这个二叉树定义结构体通过递归方式根据输入的字符串构建二叉树。对于输入字符串中的每个字符,如果是 ‘#’ 表示空节点,否则创建一个新节点,并递归地构建左右子树。 #include <limit…...

android.view.WindowLeaked解决方法
问题 我在使用WindowManager添加一个button, windowManager.addView(button,layoutParams);然后关闭当前的这个Activity的时候遇到了WindowLeak这个问题,也就是所谓的窗体泄露。 原因 主要原因是因为android只允许在UI主线程操作,我在使用W…...

浪潮信息KeyarchOS的飞跃之路
1.背景 在正式向大家介绍KOS之前,我们先关注这样一些问题。 传统操作系统在大规模数据处理、高性能计算和人工智能应用方面面临着一些瓶颈问题,包括存储和访问效率、数据传输和通信效率、并行计算性能等等问题。为了能够更好的改进这些问题,…...

C++基础 -41- 迭代器
每个stl 模板接口都有一个专用的迭代器 迭代器就是 stl 库中的 一个特殊指针,功能与指针类似(类似但不是) 迭代器定义格式 迭代器的使用,使用迭代器遍历向量容器的参数 代码运行结果 无论使用普通方式还是迭代器方式去都可以遍历vector容器...

zookeeper心跳检测 (实操课程)
本系列是zookeeper相关的实操课程,课程测试环环相扣,请按照顺序阅读来学习和测试zookeeper。 阅读本文之前,请先阅读----zookeeper 单机伪集群搭建简单记录(实操课程系列)zookeeper 客户端常用命令简单记录…...

社区新零售:重塑零售业的全新模式
社区新零售:重塑零售业的全新模式 近年来,新零售业成为了研究的焦点,它是一种以互联网为基础的零售形式。新零售通过运用先进技术手段,如大数据和人工智能,对商品的生产、流通和销售过程进行升级改造,重新构…...

北京华联BHGMall“宠粉模式”不断迭代,强体验注互动成行业UP主
在今年双11热度遇冷后,双十二被官宣取消,而这背后本质已经间接印证:传统“电商大促”的模式,已经难以为继。反观线下消费市场,则是以持续恢复和增长成为经济恢复的亮点,从线下客流量的快速回升,…...

前端时间的失败总结复盘
分享失败经验,前段时间的总结复盘: 与伙伴合作面对异常决策要及时提出质疑,怼,别太客气,客气起来,小心翼翼在意他人情绪那么这个项目就会让人难受,不要因为因为伙伴身上有标签/光环/权威就觉得…...

Ribbon 负载均衡
1、负载均衡整体流程 2、负载均衡流程逐级跟踪运行 (1) LoadBlanced 注解可以使LoadBalancerInterceptor拦截到; (2)LoadBalancerInterceptor 实现了ClientHttpRequestInterceptor接口; (3)ClientHttpRequestInterceptor接口释义如下; (4)int…...

微服务实战系列之Cache(技巧篇)
前言 凡工具必带使用说明书,如不合理的使用,可能得到“意外收获”。这就好比每个人擅长的领域有所差异,如果放错了位置或用错了人,也一定会让 Leader 们陷入两难之地:“上无法肩负领导之重托,下难免失去伙伴…...

6.17验证二叉树(LC98-M)
算法: 中序遍历下,输出的二叉搜索树节点的数值是有序序列。 有了这个特性,验证二叉搜索树,就相当于变成了判断一个序列是不是递增的了。 具体地:中序遍历时,判断当前节点是否大于中序遍历的前一个节点&a…...

【Linux】编译器-gcc/g++与调试器-gdb的使用
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.gcc/g语法 2.gcc的使用及…...
Google Guava 散列工具使用详解
文章目录 散列哈希函数哈希码布隆过滤器 散列 Guava 提供了一组散列(哈希)相关的工具类和方法,包括哈希函数接口、哈希算法实现、哈希码(HashCode)类、布隆过滤器(BloomFilter)等等。 Guava 提…...
AIGC-文生视频
stable diffusion的前传: 轻松理解 VQ-VAE:首个提出 codebook 机制的生成模型 - 知乎近两年,有许多图像生成类任务的前沿工作都使用了一种叫做"codebook"的机制。追溯起来,codebook机制最早是在VQ-VAE论文中提出的。相比…...
java中Collectors.groupingBy返回实例?
在Java中,Collectors.groupingBy()是一个用于对流元素进行分组的收集器。它可以根据指定的分类函数对流元素进行分组,并返回一个Map对象,其中键是分组的标准,值是属于相应组的元素列表。 下面是一个使用Collectors.groupingBy()方…...
uniapp打包的h5项目多了接口调用https://api.next.bspapp.com/client
产生跨域问题。 这个实际上是因为该项目在manifest.json文件中勾选了‘uni统计配置’导致的,取消勾选就可以了。 如果是小程序项目,在小程序开发者工具中添加可信任域名就可以了。 可以看看下面这个链接内容 uni-app H5跨域问题解决方案(…...
探索跨境建站:如何借助软骨鱼SaaS平台快速搭建独立站
随着全球电子商务的蓬勃发展,作为一名资深的跨境电商从业者,我深知跨境建站服务需要与时俱进,不断迈向更高效、更智能的2.0时代。今天,我想和大家分享一个让我眼前一亮的解决方案——软骨鱼SaaS平台,这个平台彻底颠覆了…...
C语言-字符串输入输出
字符串赋值 char *t “title”;char *s;s t;并没有产生新的字符串,只是让指针s指向了t所指的字符串, 对s的任何操作就是对t做的 字符串输入输出 char string[8];scanf(“%s”, string);printf(“%s”, string);scanf读入一个单词(到空格…...

OpenHarmony 设备启动Logo和启动视频替换指南
前言 OpenHarmony源码版本:4.0release 开发板:DAYU / rk3568 一、Logo替换 替换其中的logo.bmp 和 logo_kernel.bmp文件 注意事项: 1、图片的分辨率需要和设备匹配 2、如果是非首次编译(存在缓存)需要将out目录删…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...