我的 Linux 系统响应速度非常慢。我应该等待才能得到命令的结果。
我该如何调查才能知道他的行为有问题?
答案1
解决 Linux 上的性能问题并不简单,我不会涵盖所有可能性。然而,大多数问题通常分为 3 类:CPU使用率高,内存使用率高或者输入/输出使用。注意:它们都是相互关联的。
第一种:top -b -n 1 | head -15
这将为您提供以下输出:
top - 15:32:09 up 19 days, 2:32, 2 users, load average: 0.61, 0.46, 0.42
Tasks: 208 total, 1 running, 207 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.9%us, 3.6%sy, 0.0%ni, 95.2%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16430432k total, 15188864k used, 1241568k free, 304624k buffers
Swap: 2097148k total, 112k used, 2097036k free, 7342636k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16106 user 20 0 4070m 2.1g 2.1g S 30 13.5 4678:57 VirtualBox
26070 user 20 0 6113m 749m 697m S 6 4.7 628:55.93 VirtualBox
14863 user 9 -11 272m 3192 1804 S 2 0.0 5:57.19 pulseaudio
1 root 20 0 24724 2548 1276 S 0 0.0 0:05.32 init
2 root 20 0 0 0 0 S 0 0.0 0:00.15 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:33.45 ksoftirqd/0
6 root RT 0 0 0 0 S 0 0.0 0:03.74 migration/0
7 root RT 0 0 0 0 S 0 0.0 0:02.51 watchdog/0
首先看一下平均负载。查看这里了解它的含义(理解这个概念非常重要)。
重要的 :下面我假设您有一个单核(1 个 CPU,没有双核,...)
如果 5 分钟后平均负载小于 1,则 CPU 负载正常。此时我不确定它可能是什么。继续排除故障,就像不正常一样。
如果 5 分钟后平均负载大于 1,则 CPU 负载较高。要了解 CPU 负载高的原因,请检查 top 给出的输出中的以下条目:
在上面的输出中,您可以看到进程列表。看专栏%中央处理器并检查是否看到进程使用 100%。事实上,它们使用 100% 的 CPU 可能是问题,也可能不是问题,但作为测试,最好阻止它们。
要在 top 中停止某个进程,请按“k”并输入该进程的 PID 值。
重要的:写下该进程的名称。在杀死它们之前,尝试了解它们的作用(在谷歌中搜索)。您只能以普通用户身份停止您拥有的进程(在 USER 列下检查)(否则您需要是 root,但要小心您杀死的进程,如果有疑问,请不要这样做)。还可以看看%我们和%sy价值观,我们代表用户和西对于系统。基本上它们分别代表用户空间和内核空间的CPU使用率。
如果系统速度加快,则可能是您杀死的进程导致了问题。如果没有,请继续
读取值%wa。高吗? (超过50%),如果它很高,则意味着磁盘的输入/输出(I/O)很高并且CPU正在等待。使用该命令iostat
确定哪个驱动器速度慢。
您还可以检查内存使用情况。
类型自由-m在命令行中。你应该看到这样的东西:
total used free shared buffers cached
Mem: 16045 14835 1209 0 298 7172
-/+ buffers/cache: 7365 8679
Swap: 2047 0 2047
检查正在使用的缓冲区/缓存中的值。如果使用太多内存,则该值应该接近总计。
还要检查交换中的已用值(如果您有交换分区)。如果它很高,意味着接近总计下看到的最大值(对于交换),则意味着您的系统正在进行大量交换,这意味着它正在分页到磁盘(这比 RAM 慢得多)。
同样,这可能无法解决您的问题,但这是一个好的开始。
答案2
签入统计:
#!/bin/sh
while [ 1 ]
do
/usr/bin/iostat -x -m -t 10 6 >> /var/log/iostat.`date +%Y%m%d`.log 2>&1
sleep 10
done