我如何查看哪个进程每隔几分钟将我的 Banana-pi 挂起几秒钟?

我如何查看哪个进程每隔几分钟将我的 Banana-pi 挂起几秒钟?

回答

我通过转动 ( ) 的 autoneg 修复了“冻结”问题ethtool -s eth0 duplex full autoneg off

我是怎么找到这个的

每次冻结后,在下面的帖子的帮助下监视磁盘 I/O,我都会看到 rsynclogd 在冻结后正在写入磁盘。然后我检查了 /var/log 的最后更改,发现 kern.log 在冻结后有链接/链接关闭消息。所以我认为可能是网卡正在关闭和打开,如果您通过 SSH 连接或尝试访问您的 Web 服务器,它看起来会冻结。

原来的问题

我有一个带有 Xubuntu 的香蕉皮:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
No LSB modules are available.
Linux version 3.4.103 (bananapi@lemaker) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #4 SMP PREEMPT Thu Dec 18 12:55:58 CST 2014
armv7l

每隔几分钟,整个机器就会挂起几秒钟。我尝试运行,top但 cpu% 方面没有显示任何异常情况。

我注意到它挂起,因为我是通过 ssh 登录的,当我尝试输入时,有时需要 5-30 秒才能出现文本,我可以在机器上执行任何操作。

我如何找出哪个进程正在执行此操作?我说过它每隔几分钟就会发生一次,但据我所知,它是相当随机的。有时我会暂时没有注意到它,但话又说回来,我不会连续打字。

top我按照我说的尝试跑步;当我盯着它看时,它似乎每隔几秒钟更新一次列表,然后它会暂停更长时间,然后它会“赶上”并在 1 秒内刷新 20 倍,然后照常继续。

我还在其上运行 Apache 网络服务器;有时页面需要很长时间才能加载 - 然后我知道它又挂了。大约需要 5 到 30 秒的时间,一段时间内它会再次正常工作。

[编辑]

我在下面的答案中运行了发布的命令。我一直只看到 apache2 有 4096B 写入,3.5% CPU,但没有挂起。然后它突然挂起大约 10 秒,唯一关闭的是 rsyslogd: 0 0 |iotop 4507 40k 511B5.0%|jbd2/sda1-8 55 0 32k 0% 0 0 |iotop 4507 36k 570B 11%|| 0 0 |iotop 4507 40k 719B 11%||11%| 0 0 |iotop 4507 39k 582B 11%||rsyslogd 285 0 8192B0.5% 0 0 |iotop 4507 31k 0 12%|11%| 0 0 |iotop 4507 8653B 600B1.0%|11%| 0 0 |iotop 4507 36k 479B 11%||11%| 0 0 |iotop 4507 42k 534B 11%||11%| 0 0 |iotop 4507 37k 404B 11%||jbd2/sda1-8 55 0 8192B 0% 0 0 |iotop 4507 40k 745B 11%||11%| 0 0 |sshd: bananapi@pts/4 4549 206B 280B 0%|11%| 0 0 |iotop 4507 37k 639B7.5%|11%| 0 0 |iotop 4507 40k 533B 11%||11%| 0 0 |iotop 4507 37k 385B 11%||11%| 0 0 |iotop 4507 41k 511B 11%||11%| 0 0 |iotop 4507 7520B 0 10%|11%| 0 0 |iotop 4507 29k 555B2.5%|11%| 0 0 |iotop 4507 40k 704B 11%||rsyslogd 285 0 8192B 0% ...但是这个进程没有太多 CPU 使用或磁盘 IO。

更新: 同样,冻结后唯一不同的是它在 I/O 日志中显示 rsynclogd。

这真的是源头吗?它只写入 8192 字节,CPU 使用率 0%

[编辑3]grep rsyslogd *在 /var/log 中做了一个并得到以下信息: syslog:Oct 18 04:28:10 lemaker rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="285" x-info="http://www.rsyslog.com"] rsyslogd was HUPed syslog.1:Oct 18 04:00:01 lemaker rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="267" x-info="http://www.rsyslog.com"] exiting on signal 15. syslog.1:Oct 18 04:00:43 lemaker rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="285" x-info="http://www.rsyslog.com"] start syslog.1:Oct 18 04:00:43 lemaker rsyslogd: rsyslogd's groupid changed to 104 syslog.1:Oct 18 04:00:43 lemaker rsyslogd: rsyslogd's userid changed to 101 syslog.1:Oct 18 04:00:43 lemaker rsyslogd-2039: Could no open output pipe '/dev/xconsole': No such file or directory [try http://www.rsyslog.com/e/2039 ] 不知道该怎么做,除非它没有按预期执行

[编辑5] 或者可能是它挂起并且 rsyslogd 只是记录一些关于某处出现问题的事实。正如......相关性不等于因果关系?最后更新的日志在 /var/log 中:syslog、auth.log、kern.log 均由用户“syslog”记录,我认为这是来自 rsyslogd tail kern.log: Oct 18 20:43:59 lemaker kernel: [60223.243773] PHY: sunxi_gmac-0:00 - Link is Down Oct 18 20:44:12 lemaker kernel: [60236.244107] PHY: sunxi_gmac-0:00 - Link is Up - 100/Full Oct 18 20:44:22 lemaker kernel: [60246.244654] PHY: sunxi_gmac-0:00 - Link is Down Oct 18 20:44:36 lemaker kernel: [60260.245033] PHY: sunxi_gmac-0:00 - Link is Up - 100/Full Oct 18 20:45:12 lemaker kernel: [60296.246573] PHY: sunxi_gmac-0:00 - Link is Down Oct 18 20:45:25 lemaker kernel: [60309.246906] PHY: sunxi_gmac-0:00 - Link is Up - 100/Full Oct 18 20:45:57 lemaker kernel: [60341.248303] PHY: sunxi_gmac-0:00 - Link is Down Oct 18 20:46:10 lemaker kernel: [60354.248630] PHY: sunxi_gmac-0:00 - Link is Up - 100/Full Oct 18 20:46:16 lemaker kernel: [60360.249037] PHY: sunxi_gmac-0:00 - Link is Down Oct 18 20:46:30 lemaker kernel: [60374.249405] PHY: sunxi_gmac-0:00 - Link is Up - 100/Full

我重新安装了 rsynclog,甚至禁用了它。它仍然像以前一样冻结。我认为 rsysnclog 只是在冻结时记录一些内容,但这不是问题。因为相关性并不等于因果关系

我认为问题可能只是链接已打开/链接已关闭,因为我注意到通过 SSH 登录或连接我的 Web 服务器时“冻结”。这可能会使它看起来像是被冻结了,而实际上它只是网络链接。

答案1

我推荐数据统计工具。它有很多插件(通过“dstat --list”列出)可以帮助您缩小问题发生的范围。

一个起点可能是最昂贵的 IO:

# dstat -s --top-io-adv --top-bio-adv
----swap--- -------most-expensive-i/o-process------- ----most-expensive-block-i/o-process----
 used  free|process               pid  read write cpu|process               pid  read write cpu
   0  4000M|chrome                3388  152k  97k0.6%|chrome                3388  155k  95k0.6%
   0  4000M|gnome-terminal-server 4635  586B  24k0.1%|chrome                3388    0   12k0.1%

从:http://articles.slicehost.com/2010/11/12/using-dstat-to-check-io-and-swap

答案2

iotop如果延迟是由硬盘驱动器或网络操作引起的,该实用程序可能会给您提示。

答案3

您应该top按 CPU 时间运行排序,并记下所有消耗超过几秒的处理。然后,在发生冻结后,重新运行top以检查进程是否已冒泡到顶部。

如果您怀疑任何特定服务(apache?),请尝试停止它并查看问题是否仍然存在。一般来说,我会杀死任何被报告为top重要 CPU 时间消耗者的非关键进程。

如果您描述一下您的硬件配置也会有所帮助。您连接了任何外部硬件吗?的输出是什么lsmod?同样,删除所有非必要的硬件并禁用相关模块可能会有所帮助。

最后一点,请确保在评估性能时使用以太网(或者更好的是,直接连接到本地终端)。 WLAN 是一个更加复杂的系统,很多地方都容易出现冻结。例如,如果您的设备失去连接并自动重新连接,则可能看起来像是 WIFI 上的 SSH 冻结。

相关内容