linux 案例

查看分区
[omm@master ~]$ lsblk -f
NAME             FSTYPE      FSVER            LABEL                   UUID                                   FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1           ext4        1.0                                      d0394ff6-33d8-4b88-9398-4fb90a9ed25f    811.6M    10% /boot
└─sda2           LVM2_member LVM2 001                                 3nEZa7-xpOF-YZAF-g0jk-2r1q-OLWu-0AFkqW
  ├─euleros-root ext4        1.0                                      4f10ae8e-ed49-4dc5-92c9-5ff4d6571804    233.2G     8% /
  ├─euleros-swap swap        1                                        53efcb9e-bad5-4f0d-a4b6-85121b9dbba3                  [SWAP]
  └─euleros-home ext4        1.0                                      f7daa49e-8339-4420-ad69-5380774d41ea      5.4G    39% /home
sr0              iso9660     Joliet Extension EulerOS-V2.0SP10-x86_64 2021-12-24-12-59-07-00
互信配置
# 要确保每个机器主机名不一样
# 首先为每一台主机都生成公钥,一路回车,遇y按y即可,每做完一台,都会在~/.ssh目录下面生成一个名为id_rsa.pub的公钥。
ssh-keygen
# 如果不用RSA 可以指定其他算法
ssh-keygen -t ed25519 -f id_ed25519
# 把前两个主机的id_rsa.pub都复制一份到第三台主机,并且取不同的名字加以区分
scp [email protected]:/root/.ssh/id_rsa.pub ~/.ssh/139.pub
scp [email protected]:/root/.ssh/id_rsa.pub ~/.ssh/140.pub

# 将第三台主机的pub-1和pub-2以及它自己的pub均追加到authorized_keys中做一次整合
cat ~/.ssh/id_rsa.pub>>authorized_keys
cat ~/.ssh/139.pub>>authorized_keys
cat ~/.ssh/140.pub>>authorized_keys

# 在第三台主机上分发已经整合完毕的autuorized_keys
scp  ~/.ssh/authorized_keys [email protected]:/root/.ssh/authorized_keys
scp  ~/.ssh/authorized_keys [email protected]:/root/.ssh/authorized_keys
Linux磁盘占满问题分析步骤
# 查看磁盘占用情况
[root@eLTE54effbd1 ~]# df -T -h
文件系统                 类型      容量  已用  可用 已用% 挂载点
devtmpfs                 devtmpfs  7.9G     0  7.9G    0% /dev
tmpfs                    tmpfs     7.9G  4.0K  7.9G    1% /dev/shm
tmpfs                    tmpfs     7.9G  818M  7.1G   11% /run
tmpfs                    tmpfs     7.9G     0  7.9G    0% /sys/fs/cgroup
/dev/mapper/euleros-root ext4      268G   25G  230G   10% /
...
# 查看根目录的子目录的大小,找出占用空间较大的目录
[root@eLTE54effbd1 var]# du -h -d 1 / | sort -hr
117G    /
87G     /var
13G     /yxy
7.8G    /home
3.3G    /usr
2.9G    /root
1.6G    /mnt
...
# 查看根目录的子目录的大小,找出占用空间较大的目录
[root@eLTE54effbd1 var]# du -h -d 1 /var | sort -hr
87G     /var/lib
87G     /var
94M     /var/log
...
# 关注排在前面的目录,进行下一步排查
[root@eLTE54effbd1 var]# du -h -d 1 /var/lib | sort -hr
87G     /var/lib/docker
87G     /var/lib
29M     /var/lib/selinux
..
# 关注排在前面的目录,进行下一步排查
[root@eLTE54effbd1 var]# du -h -d 1 /var/lib/docker | sort -hr
87G     /var/lib/docker/overlay2
87G     /var/lib/docker
29M     /var/lib/docker/containers
...
# 直到排查到大文件
[root@eLTE54effbd1 var]# du -h -d 1 /var/lib/docker/overlay2/ | sort -hr
87G     /var/lib/docker/overlay2/
34G     /var/lib/docker/overlay2/760d1491d91a08a5ea8b5601d6b33e6009fadece3bb43fc1cbc121c09df3d22c
32G     /var/lib/docker/overlay2/92c2bc33bbe5fef1b4aa704a61a7e35857fef345afe3c2013e825d856f559550
17G     /var/lib/docker/overlay2/9a3b20f33dce0086f2c63757ba11e3dff37c79e5f2f5213617d3ba1b685a920a
3.3G    /var/lib/docker/overlay2/ab9a56a2c49d866e3dec73bf1287114d9f2c91d2e73be149fb054ec39fcb78cc
...
磁盘IO性能问题分析步骤
  1. 模拟IO操作

    while true
    do
    find / -type f -exec cat {} \; >/dev/null 2>/dev/null
    done
    
  2. 首先使用top观察机器上整体资源的使用情况,如下图cpu us稳定在10%以下,属于正常。不正常的是 wa(cpu等待IO完成)超过了20%

    Tasks: 172 total,   4 running, 168 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  5.4 us, 15.3 sy,  0.0 ni, 56.3 id, 22.0 wa,  0.5 hi,  0.4 si,  0.0 st
    MiB Mem :   5940.3 total,    163.0 free,    162.0 used,   5615.3 buff/cache
    MiB Swap:  16384.0 total,  16380.2 free,      3.8 used.   5496.2 avail Mem
    
        PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    2081597 root      20   0  215720   3188   2728 S   5.3   0.1   0:03.30 find
    2021348 root      20   0  215720   3188   2728 S   5.0   0.1   0:03.50 find
    2035244 root      20   0  215720   3088   2624 S   5.0   0.1   0:03.36 find
          1 root      20   0  166332  11600   7296 R   0.6   0.2  27:24.09 systemd
        460 root       0 -20       0      0      0 I   0.3   0.0   0:00.05 kworker/1:1H-kblockd
       1232 root      20   0   10.7g  26184  11664 S   0.3   0.4  32:53.41 etcd
    
    
  3. 使用iostat发现sda的IO利用率一直在100%左右

    [root@secret ~]# iostat -hymx 1 4
    Linux 4.18.0-147.5.2.5.h781.eulerosv2r10.x86_64 (secret)        09/29/2023      _x86_64_        (6 CPU)
    
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.2%    0.0%    6.0%   37.0%    0.0%   55.8%
    ...
      aqu-sz  %util Device
        3.19  99.7% dm-0
        0.01   1.3% dm-1
        0.00   0.0% dm-2
        2.22  99.7% sda
    
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.0%    0.0%   10.2%   29.0%    0.0%   59.7%
    ...
      aqu-sz  %util Device
        3.74  99.6% dm-0
        0.01   1.3% dm-1
        0.00   0.0% dm-2
        1.44  99.6% sda
    
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.5%    0.0%    6.2%   34.1%    0.0%   58.2%
    ...
      aqu-sz  %util Device
        3.20  99.8% dm-0
        0.00   0.5% dm-1
        0.00   0.0% dm-2
        1.18  99.8% sda
    
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.5%    0.0%    6.9%   33.3%    0.0%   58.4%
    ...
      aqu-sz  %util Device
        3.87 100.3% dm-0
        0.00   0.6% dm-1
        0.00   0.0% dm-2
        0.99 100.2% sda
    
    
  4. 使用iotop发现哪些进程在占用IO

    # iotop -o 
    Total DISK READ :     912.87 K/s | Total DISK WRITE :       0.00 B/s                                                         Actual DISK READ:       9.75 M/s | Actual DISK WRITE:       0.00 B/s
        TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                      912.8735 be/4 root      214.29 K/s    0.00 B/s  0.00 %  5.80 % find / -type f -exec cat {} ;[root@secret ~]
    
性能分析
# 查看物理CPU个数
[root@node139 ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
6
# 查看逻辑CPU个数
[root@node139 ~]# cat /proc/cpuinfo | grep "processor" | wc -l
6
# 查看cpu队列等详细信息 第一行表示统计平均值 后边的表示采样值,1表示采样间隔1s 6表示采样6次,r表示运行和等待CPU时间片的进程数量;b表示等待资源的进程数量比如IO、或者内存交互等。
[root@localhost ~]# vmstat 1 6
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 144896 238876 771992 6780240    0    0     1    14    0    0  2  2 97  0  0
 0  0 144896 239532 771992 6780248    0    0     0     4 9602 17768  3  4 94  0  0
 0  0 144896 239680 771992 6780248    0    0     0    16 9574 18522  3  3 94  0  0
 0  0 144896 238912 772000 6780248    0    0     0    48 10097 19049  2  4 94  0  0
 0  0 144896 237596 772000 6780260    0    0     0    20 9462 17956  3  4 93  0  0
 1  0 144896 236812 772000 6780260    0    0     0    36 9744 18737  2  3 95  0  0
# 查看占用资源高的进程 按照cpu占用排序 可以用head或tail查看排名前几的
[root@localhost ~]# ps aux | sort -nk 3
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.5  0.0 167912  9112 ?        Ss    2022 483:28 /usr/lib/systemd/systemd --switched-root
root           2  0.0  0.0      0     0 ?        S     2022   0:03 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<    2022   0:00 [rcu_gp]
...
# 查看进程中哪个线程占用高
[root@localhost ~]# top -p 1055129 - H
top - 11:07:26 up 56 days, 11:21,  2 users,  load average: 0.10, 0.42, 0.52
Threads: 578 total,   0 running, 578 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.1 us,  1.9 sy,  0.0 ni, 92.9 id,  0.0 wa,  1.0 hi,  0.1 si,  0.0 st
MiB Mem :  16020.3 total,    354.9 free,   8419.1 used,   7246.3 buff/cache
MiB Swap:  16384.0 total,  16240.5 free,    143.5 used.   7202.7 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1055218 tidb      20   0 7346684   1.2g  76236 S   5.3   8.0  94:36.82 PDLeaderLoop
1055174 tidb      20   0 7346684   1.2g  76236 S   0.7   8.0   9:03.43 timer
1055769 tidb      20   0 7346684   1.2g  76236 S   0.7   8.0   5:43.21 resource-meteri
1055177 tidb      20   0 7346684   1.2g  76236 S   0.3   8.0   0:11.34 background-1
1055181 tidb      20   0 7346684   1.2g  76236 S   0.3   8.0   0:16.04 RaftStoreProxy
1055129 tidb      20   0 7346684   1.2g  76236 S   0.0   8.0   0:00.16 TiFlashMain

# free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer
[root@cisuse-019-auto-btrunc-1-2 geek]# free -g
              total        used        free      shared  buff/cache   available
Mem:             30           8           4           1          17          17
Swap:            19           0          19
记录进程占用资源
  #!/bin/bash
  process=$1
  out=$1'.txt'
  pid=$(ps -e|grep $process| grep -v 'grep' | awk '{print $1;}')
  while true
  do
      mem='cat /proc/$pid/status|grep -e VmRSS'
      cpu=`top -n 1 -p $pid|tail -3|head -1|awk '{ssd=NF-4} {print $ssd}'`

      echo $(date +"%y-%m-%d-%H:%M:%S") $men $cpu >> $out
      cat /proc/meminfo |grep -E 'MemTotal|MemFree|Cached' >> $out
      echo >> $out
      sleep 2
  done
欧拉配置ntp服务
[root@cdwork3 ~]# service ntpd start
重定向至 /bin/systemctl start ntpd.service
[root@cdwork3 ~]# service ntpd status
重定向至 /bin/systemctl status ntpd.service
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2022-11-23 10:39:41 CST; 9s ago
  Process: 908260 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 908262 (ntpd)
    Tasks: 2
   Memory: 1.4M
   CGroup: /system.slice/ntpd.service
           └─908262 /usr/sbin/ntpd -u ntp:ntp -g

11月 23 10:39:41 cdwork3 ntpd[908262]: Listen and drop on 0 v6wildcard [::]:123
11月 23 10:39:41 cdwork3 ntpd[908262]: Listen and drop on 1 v4wildcard 0.0.0.0:123
11月 23 10:39:41 cdwork3 ntpd[908262]: Listen normally on 2 lo 127.0.0.1:123
11月 23 10:39:41 cdwork3 ntpd[908262]: Listen normally on 3 ens160 10.148.151.120:123
11月 23 10:39:41 cdwork3 ntpd[908262]: Listen normally on 4 tunl0 192.168.29.64:123
11月 23 10:39:41 cdwork3 ntpd[908262]: Listen normally on 5 ens160 [fe80::fff0:2000:92d4:b103%2]:123
11月 23 10:39:41 cdwork3 ntpd[908262]: Listening on routing socket on fd #22 for interface updates
11月 23 10:39:41 cdwork3 ntpd[908262]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
11月 23 10:39:41 cdwork3 ntpd[908262]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
11月 23 10:39:41 cdwork3 systemd[1]: Started Network Time Service.
# offset 主机与远程节点或服务器时间源的时间偏移量,offset 越接近于0,主机和 NTP 服务器的时间越接近(以方均根表示,单位为毫秒)
# jitter 与远程节点同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确
[root@cdwork3 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 shmaster1       10.129.0.7       7 u   31   64    7   44.154  +12581.   0.050
# 与远程同步
[root@cdwork3 ~]# date
2021年 11月 01日 星期一 11:16:19 CST
[root@cdwork3 ~]# ntpdate -u 10.129.0.7
23 Nov 11:10:14 ntpdate[1014679]: step time server 10.129.0.7 offset +33436346.740748 sec
[root@cdwork3 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*shmaster1       10.129.0.7       7 u 387d  128  377   43.185   +0.094 2188922
[root@cdwork3 ~]# date
2022年 11月 23日 星期三 11:10:21 CST
查看系统并发限制设置
# 系统限制
systemctl show --property=DefaultTasksMax
# 或者
sysctl -a |grep pid_max

# 实际并发
ps -efL | wc -l

# 查看进程限制打开文件数量
ulimit -a |grep “open files”  /   cat /etc/security/limits.conf | grep hard
     
# 查看系统限制打开文件数量
sysctl -a | grep “file-max”   /   cat /proc/sys/fs/file-max
        
# 查看当前进程资源限制
cat /proc/pid/limits
        
# 查看进程实际打开的文件数
ll /proc/pid/fd | wc –l     

你可能感兴趣的:(linux,运维,服务器)