我创建了一个运行 Amazon AMI 的 Amazon EC2 微型实例。我使用 ssh 客户端登录到服务器。成功登录后,如果我发出“top”命令,top 输出永远不会显示,命令也不会返回。它一直在等待。我必须终止 ssh 会话并重新登录。当然,其他东西(如 java、tomcat 等)都无法正常工作。
我重启了服务器,同样的问题仍然存在。我最终将实例更改为“小”实例,但仍然面临同样的问题。
在一天中的某些时间,它似乎运行良好,没有上述问题。
有人知道为什么会发生这种情况吗?这与 CPU 窃取或抖动有关吗?
已解决:“为避免 MTU 设置和数据包丢失的潜在问题,还请添加一条规则以允许“所有 ICMP”。创建新规则后,单击“应用规则更改”。从此链接获取解决方案 -http://code.google.com/p/opendatakit/wiki/AggregateAWSInstall
答案1
每当我遇到类似这样的可疑网络挂起时,我都会怀疑 MTU 问题。尝试cat
输入一个大型文本文件(大于 4k),看看是否也会挂起会话。如果确实如此,几乎可以肯定是路径上的某个地方的 MTU 较小,导致出现问题(尤其是因为它与一天中的时间有关;也许您的流量在一天中的不同时间会采用不同的路由)。在 Google 上搜索(或提出新问题)以找出如何修复 MTU 问题(我不会花很长时间在这里写出所有内容,以防我错了)。
答案2
不,但是您可以轻松获得有关挂起进程的一些调试信息。
假设您可以登录到另一个 ssh 会话,(如果不能,请确保您已经打开了 2 个会话)
基本上,如果我像这样启动一个长期运行的过程
sleep 1000
我可以从另一个终端会话中找到它,如下所示;
# ps -ef | grep sleep | grep -v grep
root 11768 11287 0 10:36 pts/19 00:00:00 sleep 1000
strace
我可以使用该工具(来自 yum/apt repo 中的 strace 包)检查该进程正在执行的系统调用
# strace -f -p 11768
Process 11768 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>^C <unfinished ...>
Process 11768 detached