系统运维工具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工具

分类工具名称备注
内存泄露memleaktest_page_leak.ko模拟page泄露的工具
test_slab_leak.ko模拟slab泄露的工具
test_vmalloc_leak.ko模拟vmalloc 泄露的工具
延迟抖动runlatencytestrunlatency模拟进程运行延迟情况

Linux内核内存泄漏检测

内核内存泄漏是指在Linux系统中,由于代码中的错误或缺陷,分配给内核的内存未能被正确释放而导致的问题。这可能会导致系统性能下降,最终耗尽系统的可用内存,甚至导致系统崩溃。下面我将介绍一些在Linux系统中检测和解决内核内存泄漏的方法:

Linux内核内存分配有几种不同的机制,其中包括slab、page和vmalloc。

ksysak memleak内存泄露检测工具,包含以下几个步骤:

  1. 集成到项目中:将ksysak memleak的内存泄漏检测代码集成到需要检测的项目中。这通常涉及将检测代码插入到项目的适当位置,以确保能够准确追踪内存分配和释放情况。

  2. 编译和运行项目:使用适当的编译选项编译项目,并确保项目成功编译。然后运行项目,让其正常执行一系列操作,包括内存的申请和释放。

  3. 收集内存泄漏数据:在项目运行期间,ksysak memleak将记录内存分配和释放的详细信息。这些数据包括每次内存分配的调用堆栈、分配大小、分配位置等。收集这些数据用于后续的内存泄漏分析。

  4. 分析内存泄漏数据:使用ksysak memleak提供的分析工具,对收集到的内存泄漏数据进行分析。这可以帮助识别潜在的内存泄漏源头、内存泄漏的大小以及泄漏发生的位置。通过这些信息,开发人员可以准确地定位问题并采取相应的修复措施。

  5. 修复内存泄漏:一旦通过分析工具确定了内存泄漏的位置和原因,开发人员就可以修复这些问题。修复可能涉及修改代码以确保正确释放内存、修复内存管理逻辑的错误等。在修复后,可以重新运行项目并使用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是一款多个运维工具集合的“结晶”,它可以大大提高运维人员的工作效率,其主要功能是系统的日常监控、线上问题的诊断和系统故障修复,对于系统的检测非常的详细,该产品的主要特点是覆盖面广,使用不受限,这大大体现了产品的实用和广泛性,让运维工作回归简单,让系统运维人员不需要深入了解内核就能找出问题的所在,非常方便!

总体来说,不管是对用户个人还是在岗的工作人员,这款工具一当之无愧的,但是在某些方面还是可以再优化的,例如:

  • 可以增强定制化:工具应该允许用户更细粒度地定制模拟泄漏的场景。比如,用户应该能够指定泄漏的大小、速度、以及泄漏发生的位置。

  • 详细的报告:工具应该生成详细且易于理解的报告,以帮助用户识别和解决内存泄漏问题。报告应该包括泄漏的大小、位置、以及可能的解决方案。

  • 实时检测和警报:工具应该能实时监测内存泄露,并在发现潜在问题时向用户发出警报,这样有助于在问题严重前及时解决问题。

还可以做一个可视化界面,对于很多用户来说,命令行可能不爱看,或者说有点复杂,一个直观的用户界面将有助于用户更方便地使用这些工具。

最后,为了确保这些工具的有效性和准确性,建议定期进行质量测试和验证。这样可以确保它们在不同场景和配置下都能可靠地工作。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript中的类

TypeScript 类 1.TypeScript中类的意义 ​ 相对以前 JavaScript 不得不用 构造函数来充当”类“,TypeScript 类的出现可以说是一次技术革命。让开发出来的项目尤其是大中项目的可读性好,可扩展性好了不是一点半点。 ​ TypeScrip 类的出现完全改变了前…

(C语言)判定一个字符串是否是另一个字符串的子串,若是则返回子串在主串中的位置。

要求: (1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。 (2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。 …

在 SQL Server 中备份和恢复数据库的最佳方法

在SQL Server中,创建备份和执行还原操作对于确保数据完整性、灾难恢复和数据库维护至关重要。以下是备份和恢复过程的概述: 方法 1. 使用 SQL Server Management Studio (SSMS) 备份和还原数据库 按照 SSMS 步骤备份 SQL 数据库 打开 SSMS 并连接到您…

项目实战之RabbitMQ死信队列应用

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 文章目录 🌟架构图&#x…

自动化巡检实现方法 (一)------- 思路概述

一、自动化巡检需要会的技能 1、因为巡检要求一天24小时全天在线,因此巡检程序程序一定会放在服务器上跑,所以要对linux操作熟悉哦 2、巡检的代码要在git上管理,所以git的基本操作要熟悉 3、为了更方便不会代码的同学操作,所以整个…

Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理

目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文…

今天刷basic

一 在kali里边链接这个服务器 ssh -p 25199 rootnode4.buuoj.cn 然后回车 yes 输入密码123456 ls查看发现什么都没有,cd ..返回上一级目录 ls 发现有flag.txt 查看文件得到flag flag{477f20d3-acd3-46e1-b50a-633e58b769c7}

pytest +uiautomator2+weditor app自动化从零开始

目录结构1.0 把设备连接单独移出去了 模块操作代码,有一些流程操作和断言方法 from devices import dv from time import sleep import random from tool.jt import capture_screenshotdef initialization(func):def wrapper():sleep(1)dv.app_stop(com.visteon.…

如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问

目录 前言 1. Ubuntu安装SVN服务 2. 修改配置文件 2.1 修改svnserve.conf文件 2.2 修改passwd文件 2.3 修改authz文件 3. 启动svn服务 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射本地端口 5. 测试公网访问 6. 配置固定公网TCP端口地址 6.1 保留一个固定…

什么是银行卡第三方支付

银行卡第三方支付是什么意思 在现代社会,随着科技的飞速发展,人们的支付方式也发生了翻天覆地的变化。从最初的现金支付,到后来的支票、信用卡,再到现在的电子支付,每一次支付方式的变革都极大地方便了人们的生活。而在…

计算机基础知识64

ForeignKey属性 to:设置要关联的表 related_name: 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’ related_query_name:反向查询操作时,使用的连接前缀,用于替换表名 to_field:设置要关联的表…

2023年个人工作总结怎么写?工作任务完成自动记录的待办软件

2023年已经接近尾声,不少人已经开始期待新的一年到来了。不过对于大多数职场人士来说,最近还有一项让人头疼的任务需要完成,这就是撰写2023年个人工作总结。 那么年度个人工作总结怎么写呢?其实很简单,年度工作总结一…

直面多云困境,聊聊F5分布式云的破局之道

在数字化浪潮的大背景下,我们迎来了一个万物上云的时代。Gartner的调查数据显示,81%的公有云用户选择两个或两个以上的云服务供应商。对企业来说,充分利用多云网络可以实现业务的成功转型和增长。然而机遇与挑战并存,本文从多云网…

LeetCode | 110. 平衡二叉树

LeetCode | 110. 平衡二叉树 OJ链接 首先计算出二叉树的高度然后计算当前节点的左右子树的高度,然后判断当前节点的左右子树高度差是否超过 1,最后递归地检查左右子树是否也是平衡的。 //计算二叉树的高度 int height(struct TreeNode* root) {if(root…

[读论文]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式(训练Task蒸馏outKD-FeatKD) 训练数据集 评测指标…

介绍几种Go语言开发的IDE

文章目录 1.前言2.几种ide2.1 Goland2.2 VsCode示例 2.3 LiteIDE2.4 Eclipse插件GoClipse2.5 Atom2.6 Vim2.7 Sublime Text 3.总结写在最后 1.前言 Go语言作为一种新兴的编程语言,近年来受到了越来越多的关注。 它以其简洁、高效和并发性能而闻名,被广…

Ubuntu 安装 CUDA 和 cuDNN 详细步骤

我的Linux系统背景: 系统和驱动都已安装。 系统是centos 8。查看自己操作系统的版本信息:cat /etc/issue或者是 cat /etc/lsb-release 用nvidia-smi可以看到显卡驱动和可支持的最高cuda版本,我的是12.2。驱动版本是535.129.03 首先&#…

SpringBoot 集成 ChatGPT,实战附源码

1 前言 在本文中,我们将探索在 Spring Boot 应用程序中调用 OpenAI ChatGPT API 的过程。我们的目标是开发一个 Spring Boot 应用程序,能够利用 OpenAI ChatGPT API 生成对给定提示的响应。 您可能熟悉 ChatGPT 中的术语“提示”。在 ChatGPT 或类似语…

013 OpenCV copyMakeBorder(padding)

目录 一、环境 二、原理 三、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、原理 cv.copyMakeBorder是OpenCV库中的一个函数,用于在图像周围添加边框(padding)。这个函数可以用于图…

WPF窗口样式的比较

WPF窗口样式的比较 1.WPF默认Window窗口 带有图标 标题栏 最小最大化推出按钮 <Window x:Class"GlowWindowDemo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006…