整机管理

  • top/uptime
top - 14:55:19 up 1 day, 15 min,  1 user,  load average: 2.70, 2.38, 1.86
任务: 278 total,   3 running, 186 sleeping,   0 stopped,   0 zombie
%Cpu(s): 15.1 us,  1.6 sy,  0.0 ni, 83.1 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8072100 total,   288444 free,  3062672 used,  4720984 buff/cache
KiB Swap:  8000508 total,  7997680 free,     2828 used.  4569192 avail Mem

进程   USER      PR  NI    VIRT   RES    SHR  S  %CPU %MEM     TIME+ COMMAND
12559 lyy       20   0 26.030g 3.194g 1.323g R 100.0 41.5  59:34.74 python
 2222 root      20   0       0      0      0 R  23.5  0.0  74:39.48 nv_queue
15642 root      20   0   46012   4160   3380 R  11.8  0.1   0:00.03 top
 2220 root     -51   0       0      0      0 S   5.9  0.0   2:03.24 irq/61-nvidia
15158 wq        20   0  961980  95948  34596 S   5.9  1.2   0:06.82 node
    1 root      20   0  225868   9500   6572 S   0.0  0.1   0:27.82 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.10 kthreadd
  • load average表示系统1min, 5min, 15min内的平均负载

    • 如果三者的平均值>0.6, 则表示系统负载过高
  • PID, %CPU, %MEM, TIME+

    • PID: 进程ID
    • %CPU: 进程占用CPU的百分比
    • %MEM: 进程占用内存的百分比
    • TIME+: 进程运行时间

CPU管理

  • vmstat的procs列和cpu列
    • procs: 系统运行的进程数
      • r, b: 运行和阻塞进程数
        • r: 运行进程数, 平均不能超过总核数 * 2, 否则表示CPU过载
        • b: 阻塞进程数, 等待磁盘IO, 网络IO等
    • cpu: CPU的使用率
      • us, sy, id, wa, st: 各个状态的CPU使用率
        • us: 用户态CPU使用率
        • sy: 内核态CPU使用率
        • id: idle状态CPU使用率
        • wa: 等待CPU时间的CPU使用率
        • st: 超时等待CPU时间的CPU使用率
      • 如果us + sy > 80, 则表示CPU过载
procs -----------memory---------- ---swap--- -----io---- -system-- ------cpu-----
 r  b   交换  空闲   缓冲    缓存      si   so    bi    bo   in   cs us sy id wa st
 2  0   2828 404008 630504 4001128    0    0     7     3   32   11 15  2 83  0  0
  • mpstat -P ALL: 查看所有和单个cpu的使用率
15时14分04秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15时14分06秒  all   43.54    0.00    1.56    0.06    0.00    0.06    0.00    0.00    0.00   54.77
15时14分06秒    0   38.31    0.00    0.00    0.00    0.00    0.50    0.00    0.00    0.00   61.19
15时14分06秒    1   38.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   61.50
15时14分06秒    2   38.31    0.00    0.50    0.50    0.00    0.00    0.00    0.00    0.00   60.70
15时14分06秒    3   38.61    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00   60.89
15时14分06秒    4   85.79    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   14.21
15时14分06秒    5   32.16    0.00    1.51    0.00    0.00    0.00    0.00    0.00    0.00   66.33
15时14分06秒    6   30.85    0.00    8.96    0.00    0.00    0.00    0.00    0.00    0.00   60.20
15时14分06秒    7   47.26    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   52.24
  • pidstat -p pid -u 1: 每隔1秒查看指定进程的CPU使用率
15时18分49秒   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
15时18分50秒  1001     12559   87.00   13.00    0.00    0.00  100.00     3  python
15时18分51秒  1001     12559  100.00    2.00    0.00    0.00  100.00     3  python
15时18分52秒  1001     12559  100.00    7.00    0.00    1.00  100.00     1  python
15时18分53秒  1001     12559  100.00    6.00    0.00    0.00  100.00     1  python

内存管理

  • free -m: 查看内存使用情况
    • 如果可用/总内存小于20%, 则表示内存不足
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:        7882        2983         373        76       4525    4468
交换:        7812           2        7810
  • pidstat -p pid -r 1: 每隔1秒查看指定进程的内存使用情况
    • %MEM: 内存使用率
15时24分24秒   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
15时24分26秒  1001     12559  21203.00      0.00 27297136 3351248  41.52  python
15时24分28秒  1001     12559   9863.00      0.00 27293872 3347936  41.48  python
15时24分30秒  1001     12559   1290.50      0.00 27293872 3348604  41.48  python
15时24分32秒  1001     12559  17779.00      0.00 27308984 3363516  41.67  python
15时24分34秒  1001     12559   4400.00      0.00 27292924 3347172  41.47  python
15时24分36秒  1001     12559  14001.00      0.00 27301924 3356184  41.58  python

磁盘管理

  • df -h: 查看磁盘使用情况
文件系统          容量  已用   可用  已用% 挂载点
udev            3.9G     0  3.9G    0% /dev
tmpfs           789M  1.9M  787M    1% /run
/dev/sda4        94G  8.5G   81G   10% /
/dev/sda5        94G  5.0G   84G    6% /usr
tmpfs           3.9G  4.0K  3.9G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/loop0      2.7M  2.7M     0  100% /snap/gnome-calculator/920
/dev/loop2      2.5M  2.5M     0  100% /snap/gnome-calculator/884
/dev/loop1      112M  112M     0  100% /snap/core/12941
/dev/loop3       56M   56M     0  100% /snap/core18/2344
/dev/loop5      111M  111M     0  100% /snap/core/12834
/dev/loop7      768K  768K     0  100% /snap/gnome-characters/741
/dev/loop4      165M  165M     0  100% /snap/gnome-3-28-1804/161
/dev/loop8      248M  248M     0  100% /snap/gnome-3-38-2004/87
/dev/loop6      249M  249M     0  100% /snap/gnome-3-38-2004/99
/dev/loop9      2.7M  2.7M     0  100% /snap/gnome-system-monitor/169
/dev/loop10      66M   66M     0  100% /snap/gtk-common-themes/1519
/dev/loop11     128K  128K     0  100% /snap/bare/5
/dev/loop12      62M   62M     0  100% /snap/core20/1405
/dev/loop13      82M   82M     0  100% /snap/gtk-common-themes/1534
/dev/loop14      56M   56M     0  100% /snap/core18/2409
/dev/loop16      62M   62M     0  100% /snap/core20/1434
/dev/loop17     640K  640K     0  100% /snap/gnome-logs/112
/dev/loop18     768K  768K     0  100% /snap/gnome-characters/761
/dev/loop15     219M  219M     0  100% /snap/gnome-3-34-1804/72
/dev/loop20     640K  640K     0  100% /snap/gnome-logs/106
/dev/loop19     2.7M  2.7M     0  100% /snap/gnome-system-monitor/174
/dev/loop21     219M  219M     0  100% /snap/gnome-3-34-1804/77
/dev/loop22     161M  161M     0  100% /snap/gnome-3-28-1804/116
/dev/sda3       454M  124M  303M   29% /boot
/dev/sda1       511M  5.3M  506M    2% /boot/efi
/dev/sda6       720G  136G  548G   20% /home
tmpfs           789M   28K  789M    1% /run/user/122
tmpfs           789M     0  789M    0% /run/user/1001
tmpfs           789M     0  789M    0% /run/user/1009

磁盘IO(大表查询)

  • iostat -xdk 2 3: 查看磁盘IO情况
    • rkB/s: 读取速度, kB/s
    • wkB/s: 写入速度, kB/s
    • %util: IO请求平均使用率
    • svctm: IO请求平均服务时间, ms
    • await: IO请求平均等待时间, ms
      • 如果svctm和await很接近, 表明IO队列很短, 可以增加磁盘IO请求数量
      • 如果await远大于svctm, 表明IO队列很长, 可以减少磁盘IO请求数量或更换磁盘
Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   22.26    0.00   0.00     2.63     0.00  22.70   0.00
loop1            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   17.69    0.00   0.00     9.58     0.00  11.83   0.00
loop2            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   14.40    0.00   0.00     2.60     0.00  14.84   0.00
loop3            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    6.28    0.00   0.00     2.40     0.00   6.61   0.00
loop4            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00  151.64    0.00   0.00    18.98     0.00  70.62   0.00
loop5            0.18    0.00      0.19      0.00     0.00     0.00   0.00   0.00    2.69    0.00   0.00     1.06     0.00   0.29   0.01
loop6            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   37.75    0.00   0.00    20.47     0.00  26.67   0.00
loop7            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    7.05    0.00   0.00     2.42     0.00   7.58   0.00
sda              1.64    1.87     54.20     20.54     0.71     1.08  30.25  36.67    5.23    4.37   0.01    33.05    10.99   2.54   0.89
loop8            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    3.87    0.00   0.00     7.44     0.00   4.51   0.00
loop9            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   12.07    0.00   0.00     2.67     0.00  12.37   0.00
loop10           0.01    0.00      0.02      0.00     0.00     0.00   0.00   0.00    2.16    0.00   0.00     3.17     0.00   1.97   0.00
loop11           0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    5.00    0.00   0.00     1.00     0.00   7.00   0.00
loop12           0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   10.77    0.00   0.00     2.27     0.00  10.64   0.00
loop13           0.01    0.00      0.02      0.00     0.00     0.00   0.00   0.00    4.87    0.00   0.00     2.43     0.00   4.04   0.00
loop14           0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    3.64    0.00   0.00     2.40     0.00   4.00   0.00
loop15           0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   57.59    0.00   0.00    20.31     0.00  51.37   0.00
loop16           0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    5.40    0.00   0.00     2.29     0.00   5.73   0.00
loop17           0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    7.37    0.00   0.00     2.42     0.00   7.79   0.00
loop18           0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    7.74    0.00   0.00     2.42     0.00   8.21   0.00
loop19           0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    9.70    0.00   0.00     2.67     0.00  10.05   0.00
loop20           0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    9.79    0.00   0.00     2.42     0.00  10.53   0.00
loop21           0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   68.80    0.00   0.00    20.31     0.00  50.27   0.00
loop22           0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   31.04    0.00   0.00    10.64     0.00  24.80   0.00
loop23           0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     2.00     0.00   0.67   0.00
  • pidstat -p pid -d 1: 每隔一秒查看指定进程的IO状态
15时39分57秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
15时39分59秒  1001     12559      0.00      0.00      0.00       0  python
15时40分01秒  1001     12559      0.00      2.00      0.00       0  python
15时40分03秒  1001     12559      0.00      2.00      0.00       0  python
15时40分05秒  1001     12559      0.00      0.00      0.00       0  python

网络管理

  • ifstat
      eno1               enp1s0             docker0      
 KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out
    0.00      0.00      0.87      1.63      0.00      0.00
    0.00      0.00      5.28      3.92      0.00      0.00
    0.00      0.00      0.99      0.44      0.00      0.00
    0.00      0.00      0.31      0.38      0.00      0.00
    0.00      0.00      0.36      0.58      0.00      0.00

使用linux命令排查问题代码行

  1. 用以上所有命令查出某资源消耗过高的pid
  2. ps -ef|grep java|grep -v grep 或 jps -l 查看某进程的详细信息
  3. ps -mp pid -o THEAD,tid,time 产看该进程下各线程的资源使用情况
  4. jstack pid|grep tid(16进制小写英文) -A60 查看某线程的堆栈信息
  5. 根据找到的代码行数, 结合业务逻辑, 查log/dump等
  6. arthas工具能完成上述工作

使用jdk自带工具排查问题

  • jps
  • jinfo
  • jmap
  • jstat
  • jstack
  • jvisualvm
  • jconsole

github

  • 范围搜索
    • 关键词 in:name/description/readme, 查找名字/描述/readme中包含关键词的项目
    • 关键词 stars:>=1000, 查找超过1000个star的项目
    • 关键词 forks:100..200, 查找100-200个fork的项目
    • 关键词 created:>=2018-01-01, 查找创建时间在2018-01-01之后的项目
  • awesom 关键词
  • 某项目文件#L13, 高亮显示第13行
  • 某项目文件#L13-L15, 高亮显示13-15行
  • 项目主页按t, 以列表形式查看所有文件
  • location:beijing language:java 区域用户搜索
版权声明:本文为rellik96原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/rellik96/p/16642552.html