2016-08-13 38 views
0

昨晚我收到一条错误日志(我使用Rollbar)从我的服务器与消息“NoMemoryError:未能分配内存”有没有什么办法知道哪个进程正在EC2中使用内存,如果我不能通过SSH连接

当我能够访问我的服务器时,花了很多,但我可以通过SSH连接。可悲的是,我运行的每个命令(free -m,top,ps等)都得到了“无法分叉:无法分配内存”。

现在,我甚至不能访问服务器,我得到“ssh_exchange_identification:阅读:连接被对方​​复位”

这件事发生之前,我只是重新启动机器,但现在我想知道发生了什么的为了防止这种情况再次发生。这是一个m3.medium(使用Ubuntu)并托管一个登台环境,所以我认为它不应该有内存问题。

我想知道是否有任何方法可以在AWS控制台中查看正在发生的情况或释放一些内存,以便至少能够通过SSH进行连接。

任何想法?

+0

您是否从“监控”选项卡检查CPU利用率? – error2007s

+0

是的,当问题开始时它达到了100%。但现在是20% –

+0

AWS控制台无法执行任何操作来影响个别进程或释放EC2实例上运行的操作系统上的任何内存。你将不得不通过SSH进入实例才能做到这一点。 –

回答

0

如果你真的不知道是什么问题,然后写一个脚本这样

#!/bin/bash 
FILE=/var/log/memoryproblem.log 
date +'%c' >> $FILE 
free -m >> $FILE 
ps axu |sort -rn -k 4,5|head >> $FILE 

化妆的cron定期

运行此这将登录相当多的信息,以便清理定期

哦,另一件事。除了ssh,还有一种方法可以查看主机上的日志信息。在ec2实例的aws控制台视图中,选择实例并右键单击,实例设置 - >系统日志可能在此情况下可能有用

另一件要做的事是临时增加实例大小。 m3.medium只有3.75GB的内存。如果你将它升级到15GB RAM的m3.extralarge,那么可能会发生问题,并且由于额外的资源,你可以看到发生了什么。一旦解决了问题,您可以回到较小的实例

+0

感谢您的日志的想法,我会创建脚本。目前我只是重新启动实例,因为我不能再等了。 –

相关问题