记一次aws服务器故障排查
经过
这次用 AWS 的服务器搭建带登录的 chatgpt-web 服务,但是每次都是服务启动之后就 crash 掉,而且是整个 ssh 连接中止。此前没有类似的故障排查经验,因此苦恼了半天时间,后来按照顺序梳理了一下。
首先,需要判断是服务器出问题还是网络波动的原因。aws 的监控粒度很粗,一般是五分钟到十分钟,如果要细粒度(比如1分钟检查一次服务器状态,需要额外购买服务)就得花钱,因此第一步是确定是否是服务器整个crash掉了。为此我等待了一段时间后,确实发现监控告警,可以判断确实是服务器出问题了,整个就崩溃了。
第二,需要判断服务器崩溃的原因。由于没太多经验,我列了很多可能
部署的服务本身有问题,导致服务器崩溃
服务器内存不足,导致Out of memory
cpu 过载
磁盘容量不足
为此我在本机部署了服务,发现一切正常,说明不是服务本身的问题。cpu过载可能性不大,常年跑不到5%。其实这个时候应该想到内存不足,但是根据我的经验,一般有swap(虚拟内存)就不会出现这个问题。检查了一下磁盘,发现
8G
磁盘用了5G
,也并没有占满。到这里有点蒙了。最终用
free -h
指令找到了原因,原来是虚拟内存功能没有开启,联想到五一假期前东京服务器的crash,一下子思路就明朗了,主要还是内存不足导致的程序崩溃。Docker 容器消耗还是挺大的。
[root@ip-172-31-23-167 ec2-user]# free -h
total used free shared buff/cache available
Mem: 449Mi 336Mi 5.0Mi 2.0Mi 108Mi 99Mi
Swap: 0B 0B 0B
于是忍痛将
t2 nano
升级到了t2 micro
,内存从0.5G
提升到了1G
,相应的价格翻倍,同时为主机分配了2G
虚拟内存,将根卷空间提到了30G
。这一步是在gpt
指导下完成的
附注
开启虚拟内存
# 创建交换文件
sudo fallocate -l 2G /swapfile
# 设置交换文件访问权限
sudo chmod 600 /swapfile
# 格式化交换文件
sudo mkswap /swapfile
# 启用交换文件
sudo swapon /swapfile
# 永久启用交换文件,在 /etc/fstab 文件中添加以下一行
vim /etc/fstab
/swapfile none swap sw 0 0
License:
CC BY 4.0