[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
# 查看磁盘占用情况
[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操作
while true
do
find / -type f -exec cat {} \; >/dev/null 2>/dev/null
done
首先使用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
使用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
使用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
[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