修改EC2上Django配置后Session Manager突然无法连接如何解决
你遇到的故障核心原因大概率是修改Django配置后启动runserver时触发了代码死锁/资源泄漏,占满EC2实例的CPU或内存,导致SSM Agent无法正常运行响应服务端请求,因此Session Manager无法连接。
排查解决步骤
1. 优先尝试重启实例
- 登录AWS控制台进入EC2控制台,找到对应实例,右键选择「实例状态」→「重启实例」
- 实例重启完成后等待2~3分钟,再尝试通过Session Manager连接即可,绝大多数临时资源耗尽导致的SSM Agent异常问题重启后都会恢复。
2. 重启后仍无法连接的排查操作
- 核对IAM角色配置:进入实例详情的「安全」标签页,确认绑定的IAM角色包含
AmazonSSMManagedInstanceCore权限策略,若配置被改动重新绑定符合要求的角色即可。 - 核对安全组规则:确认实例关联安全组的出站规则开放了443端口的所有地址访问,SSM Agent需要访问AWS服务端点上报状态,出站限制会导致Agent离线。
- 若实例部署在私有子网,确认VPC已配置SSM相关的VPC端点,公有子网部署的实例需要确认已分配公网IP/有NAT网关提供公网访问能力。
- 上述配置无问题的话,可通过EC2串口控制台直接登录实例(不需要网络连通),执行
sudo systemctl status amazon-ssm-agent查看Agent运行状态,异常的话执行sudo systemctl restart amazon-ssm-agent重启服务即可。
3. 后续操作建议
- 校验Django配置/代码不要直接启动
runserver,先执行python3 manage.py check做静态校验,无异常再启动服务。 - 线上环境不要使用
runserver托管服务,改用Gunicorn/uWSGI等专业应用服务器,配合systemd配置进程资源限制,避免单进程故障占满整个实例资源。 - 给EC2实例配置资源使用率告警,CPU/内存占用超过80%时及时通知处理,避免出现完全无法访问的故障。
内容的提问来源于stack exchange,提问作者C-Bizz
相关产品推荐
相关产品推荐

