首页 > 系统相关 >【Linux】在生产环境中,Linux系统排查常用命令

【Linux】在生产环境中,Linux系统排查常用命令

时间:2024-04-03 20:31:31浏览次数:19  
标签:Linux free 排查 线程 内存 IO 常用命令 进程 CPU

问题排查

文章目录

top命令

  • 查看整机系统新能
    pF75HIA.md.png

使用top命令的话,重点关注的是 %CPU、%MEM 、load average 三个指标

在这个命令下,按1的话,可以看到每个CPU的占用情况

uptime:系统性能命令的精简版

CPU:vmstat

  1. 查看CPU(包含但是不限于)
  2. 查看额外
    2.1 查看所有CPU核信息:mpstat -p ALL 2
    2.2 每个进程使用CPU的用量分解信息:pidstat -u 1 -p 进程编号
    命令格式:vmstat -n 2 3
    pF75qPI.md.png

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位秒),第二个参数是采样的次数

procs

​ r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大

​ b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等

cpu

​ us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序

​ sy:内核进程消耗的CPU时间百分比

pF75ORP.md.png

us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足,从上面的图片可以看出,us + sy还没有超过百分80,因此说明蘑菇博客的CPU消耗不是很高

​ id:处于空闲的CPU百分比

​ wa:系统等待IO的CPU时间百分比

​ st:来自于一个虚拟机偷取的CPU时间比

内存:free
  • 应用程序可用内存数:free -m
  • 应用程序可用内存/系统物理内存 > 70% 内存充足
  • 应用程序可用内存/系统物理内存 < 20% 内存不足,需要增加内存
  • 20% < 应用程序可用内存/系统物理内存 < 70%,表示内存基本够用
    free -h:以人类能看懂的方式查看物理内存
    pF75vM8.md.png

free -m:以MB为单位,查看物理内存
pF75xsS.md.png

free -g:以GB为单位,查看物理内存

硬盘:df

格式:df -h / (-h:human,表示以人类能看到的方式换算)
pF7I9aj.png

硬盘IO:iostat

系统慢有两种原因引起的,一个是CPU高,一个是大量IO操作

格式:iostat -xdk 2 3
pF7IkR0.md.png

磁盘块设备分布:

rkB /s:每秒读取数据量kB;

wkB/s:每秒写入数据量kB;

svctm I/O:请求的平均服务时间,单位毫秒

await I/O:请求的平均等待时间,单位毫秒,值越小,性能越好

util:一秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;

rkB/s,wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。

svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘

网络IO:ifstat
  • 默认本地没有,下载ifstat
    pF7IZsU.md.png

生产环境服务器变慢,诊断思路和性能评估

记一次印象深刻的故障?

结合Linux 和 JDK命令一起分析,步骤如下

  1. 使用top命令找出CPU占比最高的
  2. ps -ef 或者 jps 进一步定位,得知是一个怎么样的后台程序出的问题
  3. 定位到具体线程或者代码
  4. ps -mp 进程 -o THREAD,tid,time
    参数解释
    -m:显示所有的线程
    -p:pid进程使用CPU的时间
    -o:该参数后是用户自定义格式

  1. 将需要的线程ID转换为16进制格式(英文小写格式)
    printf “%x\n” 有问题的线程ID
  2. jstack 进程ID | grep tid(16进制线程ID小写英文) -A60

精准定位到错误的地方

标签:Linux,free,排查,线程,内存,IO,常用命令,进程,CPU
From: https://blog.csdn.net/m0_58617940/article/details/137247623

相关文章

  • 【Linux】SSH协议应用
    SSH协议SSH简介实现OpenSSHssh中的四个文件~/.ssh文件路径实验解析SSH简介SSH(secureshell)只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。这里只讨论SSH在LinuxShell中的用法。如果要在Windows系统中......
  • 修改linux默认启动界面——从命令行模式转换为图形化模式
    从命令行模式转换为图形化模式首先需要安装对应的图形化安装包yumgroupinstall"GNOMEDesktop""GraphicalAdministrationTools"报错Transactioncheckerror:file/boot/efi/EFI/centosfrominstalloffwupdate-efi-12-5.el7.centos.x86_64conflictswithfilefr......
  • Linux新系统装机一键配置
    最近经常帮人装双系统,每次都要搞很多配置,搜很多博客很麻烦,所以写一个随笔做个总结在desktop系统采用minimum安装完后修改系统时间timedatectlset-local-rtc1然后卸载snap为可选项。修改apt源图形化修改,在software&updates,选择阿里源安装一点工具sudoaptinstallbuil......
  • Mac M2芯片 Arm64框架的Linux安装Hive
    一、相关文件下载地址Hive信息:        版本:3.1.3下载地址:        http://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz二、安装Hive    1.检查依赖因为启动Hive之前需要先启动Hadoop集群、MySQL、并且需要JDK,之前有......
  • PM2 常用命令备忘单
    PM2常用命令备忘单 概述以下命令,基本涵盖了PM2的所有使用场景开始#分叉模式pm2startapp.js--namemy-api#给进程命名#集群模式pm2startapp.js-i0#根据可用CPU数量启动最大进程数,并使用负载均衡pm2startapp.js-imax#与上述相同,但已弃用pm2s......
  • 调研:如何基于Linux平台实现自主设计的调度器
    如果能在linux操作系统上实现自主设计的调度算法,那么现在实时领域的研究或许还有意义吧。基于linux操作系统,调整调度算法的方法大致分为两种:小调:调整Linux内核提供的14个调度器参数。在Linux内核中,当前定义了五个调度策略:NORMAL(CFS)、FIFO、RR、BATCH、IDLE。SCHED_NORMAL(......
  • Redis连接超时排查实录
    记一次Redis超时关键字:#spring-data-redis、#RedisTemplate、#Pipeline、#Lettucespring-data-redis:2.6.31现象时间轴(已脱敏)day01线上发现接口耗时不正常变高day02其他接口mget操作偶现超时,陆续发现其他Redis命令也偶尔出现超时(持续半个月)day03排查Redis无慢查询,连接......
  • linux tracepoint增加
    引入tracepoint的背景当需要获取内核的debug信息时,通常你会通过以下printk的方式打印信息:voidtrace_func(){//……printk("输出信息");//……}缺点:内核中printk是统一控制的,各个模块的printk都会被打印,无法只打印需要关注的模块如果需要修改/新增打印信......
  • Linux目录和文件管理
    Linux目录和文件管理目录Linux目录和文件管理一、目录层次二、查看文件内容2.1显示命令2.1.1cat2.2分页显示2.2.1more2.2.2less2.3显示文件前后内容2.3.1head2.3.2tail2.3.3wc2.3.4grep2.3.5paste2.3.6split三、压缩,解压缩3.1gzipbzip23.2归档tar四、vim编辑器4.1基......
  • linux 中 vim的map 映射快捷键设置
     001、打开一个测试文件,在末行模式输入下面代码:vima.txtaabbrootddROOtKKAsrOOTDDSddjjf~~~~~~~~~~~~~~~~~~~~:map<F2>:echo"helleworld!"<CR>##在末行模式中输入如下内容,然后回车,后边按F2键则表示执行了echo"hellowworld!......