Ubuntu 18.04 lsb,我正在尝试找出诊断 Amazon Ec2 实例(免费套餐)挂起时发生的情况的最佳方法。
有实验服务正在运行,可能存在/是内存泄漏。
为了提高生活质量,我使用了一个名为lnav的实用程序来帮助我浏览系统日志。我还安装了一个名为monitorix的实用程序来可视化正在发生的事情。
我可以/如何从系统日志中识别导致问题的特定过程吗?哪个日志可以帮助我?(/var/log/syslog 没有帮助)
这些图表显示了与系统交换空间相关的高 CPU 负载,直到发生灾难性故障。
但这并没有告诉我具体的过程。我怎样才能通过终端做到这一点?
我可以配置其他一些过程监控吗?
任何帮助appriciated...
编辑:感谢@Rinzwind 的提示,sar
现在已安装并且 cron 每 2 分钟运行一次......但它没有提供进程级别信息。因此,在其他答案的帮助下:
pidstat 5 > pidhist.log
管道输出到一个文本文件,并在持久会话中运行它将有助于在事件再次发生时进行诊断。
@heynnema 建议iotop
Runningiotop -P -a
用于top
文件 I/O 作为累加器。它表明实验过程(单声道服务)是使用 SWAPIN
****消耗最多交换的过程
我们看到可以看到相同的消耗模式,然后在重新启动进程后从 monitorix 恢复正常 ~20%。
在这些随机事件之间,系统连续数周保持稳定。证据iotop
证明根本问题在实验过程中!
然而,这仍然是一个运行时诊断。有没有办法从现有日志中确定事后哪个进程出错了?在没有抢先监控和日志记录的情况下做到这一点。
证明出了什么问题是需要解决的关键问题。如果没有启用日志记录,我们如何在不等待它再次发生的情况下做到这一点?内核日志???
谢谢你的帮助。
从评论...
我们查看了
free -h
andsysctl vm.swappiness
和cat /etc/fstab
,的输出,并iotop
确定了如果使用这么多,为什么要交换。系统抖动的原因有几个。
你没有足够的内存
你没有足够的交换
vm.swappiness 修改不正确
修复...
添加更多内存
增加 /swapfile 空间
将 vm.swappiness 设置为 60-90(默认为 60)
我们不添加 RAM 来解决此问题。
识别导致内存泄漏的进程与系统配置无关。
iotop -P -a
帮助识别在事件再次发生期间消耗交换的进程。数字取证日志调查的步骤将是一个更好的解决方案。