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

3 个诊断 Linux 服务器的脚本

大家好!我是大聪明-PLUS

我相信很多人都经历过服务器速度变慢和页面加载缓慢的情况。日志里没有记录任何信息,所以我们需要找到罪魁祸首。系统监控显示,CPU 没有过载,内存没有完全利用,系统响应也不太理想。

在这种情况下,标准实用程序top通常htop显得力不从心;需要更详细的分析。我经常遇到这个问题,因此我编写了三个 Bash 脚本。它们收集关键的系统指标以供进一步分析。

搜索内存异常

第一个脚本不仅仅是简单的显示free -m。它的目的是查找行为可疑的进程:过快消耗内存、不必要地占用内存,或者在 I/O 子系统上造成过大的负载。

memory_analysis.sh

它的工作原理和需要注意的事项:

  • 第 1 点和第 2 点为我们提供了一个共同的起点。重要的是,不要只关注used,而要关注availablefree + buffers/cache。如果available内存不足,系统就会开始主动使用交换分区。

  • 第 3 点通常比较典型。但此处排序是专门按驻留内存进行的。该列RSS显示进程实际占用的物理 RAM 大小。某个进程的 RSS 值急剧增加是一个明显的信号。

  • 第 4 点是更深入的诊断。如果某个进程中积累了大量此类内存,可能表明该进程正在生成大量数据,并且无法快速刷新,从而给磁盘子系统带来压力。如果此指标持续较高,则需要检查脏页刷新设置(/proc/sys/vm/dirty_ratiodirty_background_ratio)。

  • 第 5 项(压力失速信息)是一项现代且高度准确的指标。它显示了由于内存不足而导致进程被迫空闲的程度。如果此值full增加,则清楚地表明内存不足,从而影响了性能。

深度磁盘 I/O 分析

第二个脚本的目的不仅是查找大文件,而且具体查找那些当前正在磁盘子系统上创建主要负载的进程。

io_analyzer.sh

它的工作原理和需要注意的事项:

  • 项目 1 ( iostat)。关键列:(%util设备利用率接近 100% 表示磁盘是瓶颈)、await(平均 I/O 操作延迟,单位:毫秒)。过高await%util磁盘过载的明显迹象。

  • 第 3 项 ( pidstat -dl) 显示每个进程每秒读取和写入磁盘的千字节数。这可以让你立即识别出最活跃的罪魁祸首。

  • 第 4 点可能更多是关于“静默”问题。一个进程打开了数千个文件描述符并且没有关闭它们,最终可能会耗尽系统的限制 ( ulimit -n),从而导致该进程和其他进程出现错误。

  • 第 5 点。有时,某个进程(通常是 DBMS 或缓存守护进程)可能会打开一个大型文件进行读写操作。此循环可以检测到此类进程,并显示其正在访问哪个文件。这通常表示日志配置不正确,或者临时文件的大小已达到数 GB。

网络异常检测器

第三个脚本专注于网络活动。它有助于查找建立可疑大量连接的进程或检测意外的高网络流量。

network_analysis.sh

它的工作原理和需要注意的事项:

  • 第 2 项显示了 TCP 连接的状态分布。大量处于该状态的连接TIME_WAIT可能CLOSE_WAIT表明应用程序的网络堆栈存在问题,或者无法正确关闭连接。

  • 要点 3. 单个进程(例如,Web 服务器或数据库)的连接数异常高可能是正常现象,也可能表示存在 DDoS 攻击、应用程序中的连接泄漏或机器人活动。

  • 第四点——安全性和意识。该脚本会查找监听不常见端口的服务(例如,SSH 的 22 端口或 HTTP 的 80 端口)。这有助于快速检测未经授权或被遗忘的服务。

  • 要点 5 - 诊断网络级问题。接口上错误 ( errors) 或丢包 ( )数量增加通常表明网络硬件存在问题,例如过载或配置错误。drops

使用其中一个 VPS 进行测试

由于缺少监听端口,第 4 点没有输出,并且脚本中的输出不包括标准端口(我的 SSH 连接)。

结论

这些脚本是快速诊断的绝佳入门工具包。它们能帮助您从困惑(从哪里开始……)中解脱出来,获得具体的数据:“进程 N 正在耗尽所有内存”或“进程 N 正在造成巨大的磁盘负载”。借助从脚本中获取的数据,您可以更轻松地找到原因。

http://www.dtcms.com/a/564837.html

相关文章:

  • Spring Boot Bean 生命周期注解深度解析:@PostConstruct 与 @PreDestroy 面试高频考点 + 实战案例
  • 深入浅出 Java 虚拟机之实战部分
  • 营销型网站建设的认识wordpress支持python吗
  • iOS 26 CPU 使用率监控策略 多工具协同构建性能探索体系
  • iOS 文件管理与导出实战,多工具协同打造高效数据访问与调试体系
  • 文件上传(vue3+element-plus+php)
  • Unity与iOS原生交互开发入门篇 - 打开iOS设置
  • Python循环continue与break
  • 网站开发 外包空心哪家网站设计比较好
  • Python scikit-learn详解:从入门到实战,机器学习的“瑞士军刀”
  • [论文阅读] AI+ | 从 “刚性科层” 到 “智能协同”:一文读懂 AI 应对国家安全风险的核心逻辑
  • 西安网站托管商家成都比较好的室内设计公司有哪些
  • Spark 中数据读取方式详解:SparkSQL(DataFrame)与 SparkCore(RDD)方法对比及实践
  • gta5线下买房网站建设公司logo是什么意思
  • Java面试场景题及答案总结(2025版持续更新)
  • Spring 异常处理机制:@ExceptionHandler、@ControllerAdvice
  • iTOP-RK3568OpenHarmony系统南向驱动开发手册
  • k8s-部署springboot容器化应用
  • Adobe Camera Raw 2026 全面解析:AI污点清除、雪景蒙版与变量调整深度评测
  • 网站制作平台能赚钱吗男女做羞羞的事视频网站
  • Intro.js 和 Driver.js
  • 水印攻击中(鲁棒性攻击、表达攻击、解释攻击)的区别,详细解释清楚
  • 14-循环神经网络(RNN):分析RNN在序列数据中的表现和特点
  • 深入浅出 Java 虚拟机之垃圾回收
  • 沧州市东光建设局 网站网站描述是什么
  • 从零开始MySQL-第4章 C[create]R[read]U[update]D[deletet]
  • Java版智慧场馆运营管理系统源码-全链路商品进销存精准管控方案
  • 电商销售数据分析实战:从数据挖掘到业务增长
  • 中文购物网站模板保存的密码变成乱码
  • 【开题答辩实录分享】以《宠物领养微信小程序》为例进行答辩实录分享