栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

生产排查问题常用Linux命令

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生产排查问题常用Linux命令

1.Top命令
[apper@localhost ~]$ top
top - 09:52:14 up 35 days,  9:41,  2 users,  load average: 2.54, 2.95, 3.11
Tasks: 287 total,   1 running, 186 sleeping,   2 stopped,   0 zombie
%Cpu(s): 11.9 us, 11.2 sy,  0.0 ni, 75.1 id,  0.2 wa,  0.0 hi,  1.6 si,  0.0 st
KiB Mem : 49329284 total,  2005136 free, 25174992 used, 22149156 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 22823200 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
121256 root      20   0 6723500 492212  17144 S  41.2  1.0  11890:22 java
 96211 polkitd   20   0 4819148 818316  22584 S  36.2  1.7  12312:43 mysqld
 89775 root      20   0 8254936   1.5g  19848 S   9.3  3.1   1878:47 java
116991 root      20   0 7947396 743292  19852 S   8.6  1.5   1225:04 java
  7270 root      20   0 7986376 841536  19856 S   8.3  1.7   2316:39 java
   700 root      20   0 7914276 639304  19768 S   8.0  1.3   2270:26 java
  9510 root      20   0 7912208 678232  19936 S   8.0  1.4   2279:26 java
 24010 root      20   0 8028572 859676  20160 S   8.0  1.7   1087:37 java
 55083 root      20   0 7893760 608144  19760 S   8.0  1.2   2457:58 java
 57294 root      20   0 7932900 714536  19768 S   8.0  1.4   2490:02 java
129103 root      20   0 8031076 854000  19776 S   8.0  1.7   2328:38 java
  3970 root      20   0 7931068 692040  19744 S   7.6  1.4   2291:51 java
  7937 root      20   0 7918376 671364  19784 S   7.6  1.4   2272:11 java
 49430 root      20   0 7932784 673488  19704 S   7.6  1.4   2489:31 java
 71330 root      20   0 6995948 759592  20892 S   7.6  1.5   2479:27 java
127364 root      20   0 7905004 697332  19864 S   7.6  1.4   2257:43 java
130592 root      20   0 8070556   1.2g  19788 S   7.6  2.6   2287:55 java
[apper@localhost ~]$ uptime
 09:52:25 up 35 days,  9:41,  2 users,  load average: 3.24, 3.09, 3.15

  • 看CPU和内存

  • 看load average,三个值分别表示系统1分钟、5分钟、15分的平均负载值。三个数相加除以3,再乘100%,如果高于60%,表示系统负担压力重

  • 退出命令:q

  • uptime命令是top命令的精简版

  • 主要是查看整机性能

2. vmstat

主要查看CPU(包含但不限于)

[apper@localhost ~]$ vmstat -n 2 3	# 每2秒采样一次,共计采样3次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0      0 1845776   2104 22163804    0    0     0    79    0    2 18  9 74  0  0
 2  0      0 1845420   2104 22164084    0    0     0   596 35570 54426 12 13 76  0  0
 4  0      0 1845012   2104 22164320    0    0     0  1240 35678 54566 12 13 76  0  0
[apper@localhost ~]$

vmstat -n 2 3

一般vmstat

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

  • procs
    • r:运行和等待时间片的进程数,原则上1核CPU的运行队列不超过2,整个系统运行队列不超过总核数的2倍,否则表示系统压力过大。
    • b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
  • cpu
    • us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
    • sy:内核进程消耗的CPU时间百分比
    • us + sy参考值80%,如果大于80%,表示CPU不足
    • id:处于空闲的CPU百分比
    • wa:系统等待IO的CPU时间占比
    • st:来自于一个虚拟机偷取的CPU时间百分比

查看所有CPU核信息:mpstat -P ALL 2

[apper@localhost ~]$ mpstat -P ALL 2
Linux 5.4.94-1.el7.elrepo.x86_64 (localhost.localdomain)        07/15/2022      _x86_64_        (8 CPU)

10:38:19 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:38:21 AM  all   29.14    0.00    9.61    0.07    0.00    1.32    0.00    0.00    0.00   59.87
10:38:21 AM    0   32.79    0.00    7.10    0.00    0.00    7.65    0.00    0.00    0.00   52.46
10:38:21 AM    1   25.53    0.00   11.17    0.00    0.00    0.00    0.00    0.00    0.00   63.30
10:38:21 AM    2   34.02    0.00   10.31    0.00    0.00    0.52    0.00    0.00    0.00   55.15
10:38:21 AM    3   25.00    0.00   10.42    0.00    0.00    0.52    0.00    0.00    0.00   64.06
10:38:21 AM    4   37.50    0.00    7.81    0.00    0.00    0.00    0.00    0.00    0.00   54.69
10:38:21 AM    5   25.79    0.00   10.53    0.53    0.00    0.53    0.00    0.00    0.00   62.63
10:38:21 AM    6   23.16    0.00   10.53    0.00    0.00    0.00    0.00    0.00    0.00   66.32
10:38:21 AM    7   29.47    0.00    9.47    0.53    0.00    0.53    0.00    0.00    0.00   60.00

每个进程使用CPU的用量分解信息:pidstat -u 1 -p 进程编号

3. free

用于查看内存

[apper@localhost ~]$ free
              total        used        free      shared  buff/cache   available
Mem:       49329284    25139784     1635004      863884    22554496    22849624
Swap:             0           0           0
[apper@localhost ~]$ free -g
              total        used        free      shared  buff/cache   available
Mem:             47          23           1           0          21          21
Swap:             0           0           0
[apper@localhost ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:          48173       24550        1595         843       22026       22314
Swap:             0           0           0
[apper@localhost ~]$

常用free -m

经验值:

  • 应用程序可用内存/系统物理内存 > 70% ,内存充足
  • 应用程序可用内存/系统物理内存 < 20% ,内存不足,需要增加内存
  • 20% < 应用程序可用内存/系统物理内存 < 70%, 基本够用。
4. df

用于查看硬盘信息

[apper@localhost ~]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  24G     0   24G   0% /dev
tmpfs                     24G     0   24G   0% /dev/shm
tmpfs                     24G  844M   23G   4% /run
tmpfs                     24G     0   24G   0% /sys/fs/cgroup
/dev/mapper/centos-root  483G  148G  336G  31% /
/dev/sda1               1014M  226M  789M  23% /boot
/dev/mapper/centos-swap   16G   33M   16G   1% /swap
tmpfs                    4.8G     0  4.8G   0% /run/user/0
tmpfs                    4.8G     0  4.8G   0% /run/user/1000
5. 磁盘IO:iostat
Linux 5.4.94-1.el7.elrepo.x86_64 (localhost.localdomain)        07/15/2022      _x86_64_        (8 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.26    0.03   26.65     1.60   604.67    45.45     0.06    2.68    1.27    2.68   1.04   2.78
dm-0              0.00     0.00    0.03   26.75     1.60   604.67    45.29     0.07    2.50    1.15    2.50   1.04   2.78
dm-1              0.00     0.00    0.00    0.00     0.00     0.00    55.39     0.00    0.47    0.31   18.00   0.50   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00   12.00     0.00   153.00    25.50     0.01    1.21    0.00    1.21   1.46   1.75
dm-0              0.00     0.00    0.00   12.00     0.00   153.00    25.50     0.01    1.12    0.00    1.12   1.50   1.80
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    9.50     0.00   190.75    40.16     0.01    1.53    0.00    1.53   1.74   1.65
dm-0              0.00     0.00    0.00    9.50     0.00   190.75    40.16     0.01    1.58    0.00    1.58   1.79   1.70
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

await:IO请求的平均等待时间,单位毫秒。越小越好

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

查看具体进程信息:

pidstat -d 采样间隔秒数 -p 进程号
6. 网络IO:ifstat

ifstat 1

查看网卡的out/in情况

7. 生产环境CPU过高,怎么排查

1)先用top命令找出CPU占比最高的

2)ps -ef或者jps进一步定位,得知是一个怎么样的后天程序有问题

# 查询进程编号
jps -l
ps -ef|grep java|grep -v grep

3)定位到具体线程或者代码

ps -mp 进程号 -o THREAD,tid,time;

  • -m:显示所有的线程
  • -p:pid进程使用CPU时间
  • -o:该参数后是用户自定义格式
[apper@localhost ~]$ ps -mp 106138 -o THREAD,tid,time;
USER     %CPU PRI SCNT WCHAN  USER SYSTEM    TID     TIME
root     92.8   -    - -         -      -      - 00:01:02
root      0.0  19    - -         -      - 106138 00:00:00
root     24.8  19    - -         -      - 106156 00:00:16
root      0.3  19    - -         -      - 106157 00:00:00
root      0.3  19    - -         -      - 106158 00:00:00
root      0.3  19    - -         -      - 106159 00:00:00
root      0.3  19    - -         -      - 106160 00:00:00
root      0.3  19    - -         -      - 106161 00:00:00
root      0.3  19    - -         -      - 106162 00:00:00
root      0.3  19    - -         -      - 106163 00:00:00
root      0.3  19    - -         -      - 106164 00:00:00
root      1.0  19    - -         -      - 106165 00:00:00
root      0.2  19    - -         -      - 106166 00:00:00
root      0.2  19    - -         -      - 106167 00:00:00
root      0.0  19    - -         -      - 106168 00:00:00
root     17.0  19    - -         -      - 106169 00:00:11
root     17.9  19    - -         -      - 106170 00:00:12
root     18.3  19    - -         -      - 106171 00:00:12
root      6.8  19    - -         -      - 106172 00:00:04
root      0.0  19    - -         -      - 106173 00:00:00
root      0.1  19    - -         -      - 106174 00:00:00
root      0.0  19    - -         -      - 106182 00:00:00
root      0.0  19    - -         -      - 106183 00:00:00
root      0.9  19    - -         -      - 106184 00:00:00
root      0.0  19    - -         -      - 106249 00:00:00
root      0.0  19    - -         -      - 106325 00:00:00
root      0.0  19    - -         -      - 106326 00:00:00
root      0.0  19    - -         -      - 106327 00:00:00
root      0.0  19    - -         -      - 106329 00:00:00
root      0.0  19    - -         -      - 106330 00:00:00
root      0.0  19    - -         -      - 106341 00:00:00
root      0.0  19    - -         -      - 106342 00:00:00
root      0.0  19    - -         -      - 106343 00:00:00
root      0.0  19    - -         -      - 106344 00:00:00
root      0.0  19    - -         -      - 106345 00:00:00
root      0.0  19    - -         -      - 106346 00:00:00
root      0.0  19    - -         -      - 106347 00:00:00
root      0.0  19    - -         -      - 106348 00:00:00
root      0.0  19    - -         -      - 106349 00:00:00
root      0.0  19    - -         -      - 106350 00:00:00
root      0.0  19    - -         -      - 106351 00:00:00
root      0.0  19    - -         -      - 106352 00:00:00

4)将需要的线程ID转换为16进制格式,英文小写。

tid:106156 -> 19eac

5)jstack 进程id|grep tid(16禁止线程ID小写英文) -A60

jstack 106138 |grep 19eac -A60 

或者用jstack dump日志

jstack 106138 >> xxx.log   打印出该进程下线程日志
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号