我试图了解为什么服务器(AWS Ubuntu)有时会变得无响应并最终必须重新启动。
在查看top
日志时,我发现一个我认为可能导致此问题的进程。当它启动时,负载在几分钟内从大约 3 增加到 300,然后崩溃了。
但是,查看日志时,我不确定如何解释结果。看起来内存使用量从 5GB 降到了 5KB,所以我想这很好?这种过程有可能导致服务器崩溃吗?还是我看错了?
这是top
该过程随时间的输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1706 www-data 35 15 10.875g 5.181g 100 D 6.2 70.9 8:35.43 php ......
1706 www-data 35 15 10.875g 3.076g 808 R 0.0 42.1 8:37.37 php ......
1706 www-data 35 15 10.875g 236608 1132 D 0.0 3.1 8:37.45 php ......
1706 www-data 35 15 10.875g 26408 736 D 0.0 0.3 8:37.54 php ......
1706 www-data 35 15 10.875g 11268 628 D 0.0 0.1 8:37.63 php ......
1706 www-data 35 15 10.875g 10308 516 D 0.0 0.1 8:37.72 php ......
1706 www-data 35 15 10.875g 8116 360 D 0.0 0.1 8:37.78 php ......
1706 www-data 35 15 10.875g 6728 688 D 0.0 0.1 8:37.84 php ......
1706 www-data 35 15 10.875g 5840 484 D 0.0 0.1 8:37.90 php ......
1706 www-data 35 15 10.875g 5852 644 D 0.0 0.1 8:37.97 php ......
编辑:我把服务器崩溃前的最后一份可用日志放在这里:https://pastebin.com/ZM1XiUid这里面是否存在可能导致坠机的因素?
答案1
您可以从输出中注意到以下几点top
:
- 显示的某个进程正在使用超过 5GB 的内存
5.181g
。 - 有多个进程处于不可中断的睡眠模式
D
。此模式意味着进程正在等待某些操作(最有可能是 I/O,如磁盘操作)。
如果您获得过多此类进程(D
状态),您的服务器负载将变得过高。为了解决此问题,您需要知道这些进程正在做什么或等待什么。可能是太多请求影响了较慢的磁盘。
这种情况可能不会导致整个服务器崩溃,但至少会使服务器不稳定或无响应。
这个帖子解释什么是不可中断的睡眠状态。