首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux CPU使用和进程执行历史记录

Linux CPU使用和进程执行历史记录
EN

Server Fault用户
提问于 2012-05-08 21:17:27
回答 4查看 131.3K关注 0票数 53

有没有任何方法可以看出是哪个进程(Es)导致了最多CPU的使用?

我有AMAZON,它的CPU利用率达到100 %,让我重新启动系统。我甚至不能通过SSH登录(使用putty)。

有什么方法可以看出是什么导致了如此高的CPU使用率,以及是哪个进程导致了这一点?

我知道sartop命令,但是我在任何地方都找不到进程执行历史记录。以下是亚马逊EC2监控工具的图像,但我想知道是哪个进程导致了这种情况:

我也尝试过ps -eo pcpu,args | sort -k 1 -r | head -100,但没有找到这么高的CPU使用率。

EN

回答 4

Server Fault用户

回答已采纳

发布于 2012-05-08 22:14:20

有几种可能的方法你可以做到这一点。注意,在一个失控的场景中,它完全有可能导致这一点,而不仅仅是一个。

第一种方法是设置pidstat以在后台运行并生成数据。

代码语言:javascript
复制
pidstat -u 600 >/var/log/pidstats.log & disown $!

这将给您一个非常详细的系统运行的展望,每隔十分钟。我建议这是您的第一次访问,因为它产生了最有价值/最可靠的数据来使用。

这有一个问题,主要是如果盒子进入一个失控的cpu循环并产生巨大的负载-你不能保证你的实际进程将在加载期间及时执行(如果有的话),所以你实际上可能会错过输出!

第二种查找方法是启用流程会计。可能是更长远的选择。

代码语言:javascript
复制
accton on

这将启用流程会计(如果尚未添加)。如果在此之前没有运行,则需要时间来运行。

运行了24小时之后,您就可以运行这样的命令(它将产生这样的输出)

代码语言:javascript
复制
# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

各列按如下顺序排列:

  1. 通话次数
  2. 呼叫百分比
  3. 用于这种类型的所有进程的实时时间。
  4. 百分比。
  5. 用户CPU时间
  6. 百分比
  7. 系统CPU时间
  8. 普通的IO呼叫。
  9. 百分比
  10. 命令名

您要寻找的是生成最多用户/系统CPU时间的进程类型。

这会将数据分解为CPU时间的总量(上一行),以及CPU时间是如何分配的。进程会计仅在进程何时启动时才正确记帐,因此,在启用该系统以确保所有服务都得到核算之后,重新启动系统可能是最好的方法。

这一点,并不能给你一个确切的想法,它可能是什么过程可能是这个问题的原因,但可能会给你很好的感觉。因为这可能是一个24小时的快照,有可能扭曲结果,所以请记住这一点。它还应该始终进行日志记录,因为它的内核特性,并且与pidstat不同的是,即使在负载很重的情况下,它也总是会产生输出。

最后一个可用的选项也使用进程记帐,因此您可以像上面一样打开它,但随后使用程序"lastcomm“生成问题发生前后执行的进程的一些统计信息以及每个进程的cpu统计信息。

代码语言:javascript
复制
lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

这也会给你一些提示,说明是什么导致了这个问题。

票数 45
EN

Server Fault用户

发布于 2012-05-09 00:11:05

顶上是一个特别方便的守护进程,用于查看进程级别的演练,默认情况下将这些数据存档28天。除了提供一个令人敬畏的实时监控界面之外,您还可以指定那些日志文件来打开并逐步遍历它们。

文章给出了一些功能的概念,您可以在命令页中找到更多的功能。

这确实是一款很棒的软件。

票数 24
EN

Server Fault用户

发布于 2012-05-09 06:05:04

普斯蒙莫尼特这样的程序可能对你有帮助。它们可以监视系统上运行的进程以及是否存在阈值(CPU使用、内存使用.)获取“超出”,您可以设置它们向您发送关于发生了什么的电子邮件报告。

还可以自动重新启动行为不检的进程。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/387268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档