线上负载过高排查(top/vmstat/ifstat/free/df)
创始人
2024-05-29 10:47:00
0

目录

一、五大命令

二、故障排查步骤

1、top命令找出CPU占比最高的

2、ps -ef 或者 jps -l进一步定位

3、ps -mp位到具体线程或者代码

4、jstack精准定位到错误的地方


本文通过学习:周阳老师-尚硅谷Java大厂面试题第二季 总结的Linux+JDK命令操作相关的笔记

一、五大命令

模块命令

说明

整机

top

重点关注的是 %CPU、%MEM 、load average 三个指标。在这个命令下,按1的话,可以看到每个CPU的占用情况。也可用uptime(系统性能命令的精简版)

CPUvmstat

vmstat -n 2 3

第一个参数是采样的时间间隔数(秒),第二个参数是采样的次数

网络ifstat

内存free

free -h:以人类能看懂的方式查看物理内存

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

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

硬盘

df

du

iostat

(1)df -h    以人类能看到的方式换算

(2)du -h ./*

(3)iostat -xdk 2 3  查看I/O

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

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

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

svctm I/O:请求的平均服务时间(毫秒)

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

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

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

二、故障排查步骤

1、top命令找出CPU占比最高的

  

2、ps -ef 或者 jps -l进一步定位

3、ps -mp位到具体线程或者代码

ps -mp 进程ID -o THREAD,tid,time

-m   显示所有的线程
-p   pid进程使用cpu的时间
-o   该参数后是用户自定义格式

 

4、jstack精准定位到错误的地方

jstack 十进制进程ID | grep 小写十六进制线程ID -A60

十进制进程ID = 5101,5102转为小写十六进制线程ID = 13ee, -A60输出60行

 

package com.atguigu.test;


public class JavaDemo02{
    public static void main(String[] args){
        while(true) {
         System.out.println(new java.util.Random().nextInt(77778888));
        }
    }
}

 

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...