AWS EC2上Django+Apache运行9参数逻辑回归出现ERR_CONNECTION_RESET错误
故障原因
- 资源配置不足:AWS EC2实例的内存、CPU规格低于本地开发环境,9个参数参与逻辑回归运算时内存占用超出实例可用阈值,触发系统OOM机制直接杀死Apache进程,导致连接被重置。可执行
dmesg | grep -i oom命令查看系统日志确认是否存在OOM杀进程记录。 - Apache配置限制:生产环境Apache的超时时间、进程可用内存上限、最大请求耗时等配置阈值比本地环境严格,9参数运算的耗时或资源占用超出阈值后,Apache主动终止进程断开连接。可查看Apache的error_log日志定位具体触发项。
- 依赖版本差异:生产环境安装的Pandas、Scikit-learn等计算依赖的版本与本地环境不一致,9参数的运算逻辑触发了生产环境依赖库的已知BUG,导致进程异常崩溃。
- 同步请求阻塞:逻辑回归训练属于计算密集型耗时任务,直接通过同步AJAX请求处理会长时间占用Apache进程,当进程资源被占满后Apache会主动重置连接。
解决建议
- 升级EC2实例规格:优先提升实例内存配置,至少匹配本地开发环境的资源量级,避免运算过程中出现内存溢出。
- 调整Apache配置:放宽
Timeout、RLimitMEM、LimitRequestBody等参数的阈值,同时配置Apache进程崩溃后自动重启的规则,避免服务完全不可用。 - 异步改造业务逻辑:将模型训练这类耗时的计算任务从同步请求链路中剥离,改用Celery等异步任务框架处理,前端通过轮询或websocket查询任务进度,避免长时间阻塞Apache进程。
- 对齐依赖版本:将生产环境的Python版本、所有计算相关依赖的版本全部替换为本地正常运行的环境版本,排除兼容性问题。
- 加装资源监控:在EC2实例上部署CPU、内存、进程状态监控,运行9参数任务时实时观测资源占用情况,精准定位瓶颈点。
内容的提问来源于stack exchange,提问作者user3288051
相关产品推荐
相关产品推荐

