无法确定内存使用率过高的原因

无法确定内存使用率过高的原因

我的 VPS 持续内存不足,我的 Apache 服务器宕机,当我登录重新启动时,出现“内存故障”错误,必须通过托管公司仪表板重新启动。

但是,在重新启动之前,我可以使用 查看内存使用情况top,没有发现任何可疑情况。Mysqld 有时会达到 6% 的内存峰值,几个 php-cgi7 进程达到 1%,仅此而已,所有其他进程似乎都没有消耗太多内存。

那么是否top因为某种原因而丢失了某些东西?我还能做些什么来调试这种情况?

答案1

我猜想当你登录时,导致问题的进程已经消失了。尝试登录并使用 top 找出当系统正常运行但已运行一段时间时哪些进程占用了内存。

正如@yoonix 所建议的,检查您的系统日志。要找到此日志,请在 Google 上搜索“(操作系统名称) 系统日志位置”之类的内容。使用您选择的文本编辑器查看该文件,查找适用的消息。

您可以参考这里了解你的操作系统如何决定终止哪些进程。

如上所述这一页(现在有点过时了),你可以使用类似这样的方法来找出被杀死的东西

grep -i kill /var/log/messages*

你应该看到类似这样的条目

host kernel: Out of Memory: Killed process 2592 (oracle).

答案2

使用任何监控系统或例如收集和它的进程插件收集每个进程的资源使用情况统计信息。之后,您可以从图表中检查哪些进程或哪些进程行为不当并占用了所有内存,并且您将能够看到内存使用量是缓慢上升还是突然爆发。

相关内容