我目前正在运行平均负载为 4 的 Debian 11。我想降低此负载 - 但我真的不知道从哪里开始,至少是分析部分的第一步......
它是一个 Docker 服务器,带有 MySQL,
下面是一些命令及其输出,给出了服务器的一些概述。
流程:
administrator@srv-docker:~$ top -b -n 1 | head -n 20
top - 12:56:41 up 12 days, 4:28, 1 user, load average: 4,19, 4,16, 4,14
Tasks: 242 total, 1 running, 241 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1,4 us, 2,1 sy, 0,0 ni, 81,6 id, 14,9 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 7955,3 total, 131,5 free, 1877,4 used, 5946,4 buff/cache
MiB Swap: 0,0 total, 0,0 free, 0,0 used. 5733,5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
775840 systemd+ 20 0 4996956 973276 35944 S 11,8 11,9 1019:50 mysqld
1856787 adminis+ 20 0 10480 3956 3372 R 11,8 0,0 0:00.03 top
1 root 20 0 164224 10424 7656 S 5,9 0,1 0:11.93 systemd
1184306 472 20 0 1974008 119776 60416 S 5,9 1,5 10:40.71 grafana-server
2 root 20 0 0 0 0 S 0,0 0,0 0:00.67 kthreadd
3 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 kworker/0:0H-events_highpri
8 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcu_tasks_rude_
10 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcu_tasks_trace
11 root 20 0 0 0 0 S 0,0 0,0 3:07.86 ksoftirqd/0
12 root 20 0 0 0 0 I 0,0 0,0 21:54.79 rcu_sched
记忆:
administrator@srv-docker:~$ free -mh
total used free shared buff/cache available
Mem: 7,8Gi 1,8Gi 125Mi 49Mi 5,8Gi 5,6Gi
Swap: 0B 0B 0B
IO统计:
root@srv-docker:~# iostat -m
Linux 5.10.0-16-amd64 (srv-docker) 23/07/2022 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0,92 0,00 1,12 9,31 0,00 88,65
Device tps MB_read/s MB_wrtn/s MB_dscd/s MB_read MB_wrtn MB_dscd
dm-0 0,03 0,00 0,00 0,00 757 54 2965
dm-1 0,22 0,00 0,00 0,00 351 1863 758
dm-2 0,00 0,00 0,00 0,00 2 0 0
dm-3 0,00 0,00 0,00 0,00 3 4 0
dm-4 0,01 0,00 0,00 0,00 15 136 3578
dm-5 204,93 0,00 1,90 0,01 3929 2009381 12419
sda 155,93 0,00 1,82 0,02 5071 1919118 20230
sr0 0,00 0,00 0,00 0,00 0 0 0
虚拟机统计:
root@srv-docker:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 140500 216556 5868484 0 0 1 233 5 3 1 1 89 9 0
性能顶部:
国会议员统计:
root@srv-docker:~# mpstat -P ALL
Linux 5.10.0-16-amd64 (srv-docker) 23/07/2022 _x86_64_ (8 CPU)
15:04:53 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:04:53 all 0,92 0,00 0,67 9,31 0,00 0,46 0,00 0,00 0,00 88,65
15:04:53 0 1,14 0,00 0,80 7,02 0,00 1,05 0,00 0,00 0,00 90,00
15:04:53 1 0,67 0,00 0,64 27,24 0,00 0,46 0,00 0,00 0,00 70,99
15:04:53 2 1,13 0,00 0,86 12,72 0,00 0,50 0,00 0,00 0,00 84,79
15:04:53 3 0,70 0,00 0,47 3,16 0,00 0,29 0,00 0,00 0,00 95,38
15:04:53 4 1,11 0,00 0,84 10,40 0,00 0,41 0,00 0,00 0,00 87,24
15:04:53 5 0,74 0,00 0,46 2,82 0,00 0,27 0,00 0,00 0,00 95,71
15:04:53 6 1,14 0,00 0,82 8,55 0,00 0,39 0,00 0,00 0,00 89,10
15:04:53 7 0,71 0,00 0,45 2,66 0,00 0,28 0,00 0,00 0,00 95,90
请问有人可以帮助我吗?预先感谢...任何光线都值得赞赏。
答案1
%Cpu(s): 1,4 us, 2,1 sy, 0,0 ni, 81,6 id, 14,9 wa, 0,0 hi, 0,0 si, 0,0 st
请注意,该%Cpu(s)
行显示您的系统为 81.6%闲置的。
你有多少个CPU核心?
如果 CPU 核心数量高于负载平均值的整数部分,您无需担心:您的系统甚至没有那么努力地工作。 (如果您认为负载 >1 是一个值得关注的问题,那么这是仅适用于单核单 CPU 系统的旧建议。)
按1查看top
CPU 使用率的每个核心分类(或每个超线程,如果您的 CPU 具有该功能并且已启用)。您将看到的行数%CpuN
将反映系统上可用的 CPU 核心/超线程的数量。
您的 RAM 主要用作缓存,甚至其中一些完全免费,因此显然您有足够的 RAM 来满足您的工作负载。
这mpstat
表明%iowait
往往主导 CPU 使用类别:如果当您在一段时间内收集更大的数据集时这种模式继续存在,那么如果您绝对想要升级某些东西,则该系统可能会从更快的存储中受益最多。
perf top
输出中的主导项是__softirqentry_text_start
与中断处理相关的;在服务器系统中,这通常与存储或网络活动相关。
这iostat -m
表明您的磁盘 I/O 工作负载显然主要是写入,因此您的系统可能在 RAM 中拥有日常所需的所有内容,而写入操作本质上只是写入缓存刷新。但我建议遵循@Sotto Voce 在评论中的建议,并让vmstat
//工具随着时间的iostat
推移mpstat
生成多组输出,例如使用iostat -m 5 5
.