追踪高 CPU 平均负载
Track down high CPU load average
试图了解我的服务器发生了什么。
这是一个 2 cpu 服务器,所以:
$> grep 'model name' /proc/cpuinfo | wc -l
2
平均负载时,队列显示 ~8 :
$> uptime
16:31:30 up 123 days, 9:04, 1 user, load average: 8.37, 8.48, 8.55
所以您可以假设,负载确实很高,而且事情正在堆积,系统上有一些负载,而不仅仅是峰值。
但是,查看排名前 cpu 的消费者:
> ps -eo pcpu,pid,user,args | sort -k 1 -r | head -6
%CPU PID USER COMMAND
8.3 27187 **** server_process_c
1.0 22248 **** server_process_b
0.5 22282 **** server_process_a
0.0 31167 root head -6
0.0 31166 root sort -k 1 -r
0.0 31165 root ps -eo pcpu,pid,user,args
自由命令的结果:
total used free shared buffers cached
Mem: 7986 7934 52 0 9 2446
-/+ buffers/cache: 5478 2508
Swap: 17407 60 17347
This is the result on an ongoing basis, e.g. not even
正在使用单个 CPU,顶级消费者,总是 ~8.5%。
我的问题:我有什么方法可以追查高负载的根源?
你试过htop命令了吗?它有时会以有用的方式显示更多信息。
根据您的 free
输出,系统内存有时会耗尽,因此会使用交换缓冲区(请参阅第 used
= 60 列)。使用的总内存 used - (buffers + cached)
结果几乎为零。这意味着有时间消耗所有物理 RAM。
对于服务器,尽量避免可能导致数据从系统内存交换到交换缓冲区(反之亦然)的页面错误,因为访问硬盘驱动器比系统内存慢。
在您的 top
输出中,尝试调查 wa
列。更高的百分比值意味着 CPU 花费更多时间等待来自磁盘的数据 IO 而不是进行有意义的计算。
Cpu(s): 87.3%us, 1.2%sy, 0.0%ni, 27.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
尝试减少不需要的守护进程或服务以减少内存占用,并考虑向系统添加更多 RAM。
对于 2 CPU(s) 服务器,理想负载小于 2.0(每个 CPU 负载小于 1.0)。负载为 8.0 意味着每个 CPU 负载大约为 4.0,这不是很好。
试图了解我的服务器发生了什么。 这是一个 2 cpu 服务器,所以:
$> grep 'model name' /proc/cpuinfo | wc -l
2
平均负载时,队列显示 ~8 :
$> uptime
16:31:30 up 123 days, 9:04, 1 user, load average: 8.37, 8.48, 8.55
所以您可以假设,负载确实很高,而且事情正在堆积,系统上有一些负载,而不仅仅是峰值。 但是,查看排名前 cpu 的消费者:
> ps -eo pcpu,pid,user,args | sort -k 1 -r | head -6
%CPU PID USER COMMAND
8.3 27187 **** server_process_c
1.0 22248 **** server_process_b
0.5 22282 **** server_process_a
0.0 31167 root head -6
0.0 31166 root sort -k 1 -r
0.0 31165 root ps -eo pcpu,pid,user,args
自由命令的结果:
total used free shared buffers cached
Mem: 7986 7934 52 0 9 2446
-/+ buffers/cache: 5478 2508
Swap: 17407 60 17347
This is the result on an ongoing basis, e.g. not even
正在使用单个 CPU,顶级消费者,总是 ~8.5%。
我的问题:我有什么方法可以追查高负载的根源?
你试过htop命令了吗?它有时会以有用的方式显示更多信息。
根据您的 free
输出,系统内存有时会耗尽,因此会使用交换缓冲区(请参阅第 used
= 60 列)。使用的总内存 used - (buffers + cached)
结果几乎为零。这意味着有时间消耗所有物理 RAM。
对于服务器,尽量避免可能导致数据从系统内存交换到交换缓冲区(反之亦然)的页面错误,因为访问硬盘驱动器比系统内存慢。
在您的 top
输出中,尝试调查 wa
列。更高的百分比值意味着 CPU 花费更多时间等待来自磁盘的数据 IO 而不是进行有意义的计算。
Cpu(s): 87.3%us, 1.2%sy, 0.0%ni, 27.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
尝试减少不需要的守护进程或服务以减少内存占用,并考虑向系统添加更多 RAM。
对于 2 CPU(s) 服务器,理想负载小于 2.0(每个 CPU 负载小于 1.0)。负载为 8.0 意味着每个 CPU 负载大约为 4.0,这不是很好。