2.付费系列之神经网络上线磁盘暴涨解决方案

本文介绍了在部署神经网络服务时遇到的磁盘空间暴涨问题及其排查过程。在生产环境中,由于Docker无法启动服务,磁盘空间持续增长。经过分析日志、禁止core文件生成和排查多进程启动问题,最终发现是机器缺少AVX AVX2指令集导致的问题,确保指令集存在后问题得到解决。
摘要由CSDN通过智能技术生成

最近某客户地址标准化需版本迭代,由于神经网络属于第一次上线,遇到了磁盘暴涨问题,在此分享给大家问题排查及解决方案

1. 问题现象

在我们K8S及Docker-Compose部署方式中,服务均可正常启动运行,在客户测试环境也正常,但是到了生产环境,Docker无法启动该服务,出现磁盘空间持续暴涨导致资源耗时,预警出现

2. 软硬件环境介绍
  • 神经网络基于Tensorflow2.5
  • CPU: Interl® Xeon® Gold 521B CPU @2.3GHz
3. 排查解决
3.1 首先docker logs查询容器日志如下
Booting worker with pid: 314
Worker with pid 314 was terminated due to signal 4
Booting worker with pid: 327
Worker with pid 327 was terminated due to signal 4

并且我们发现生成大量core文件在磁盘中

3.2 尝试禁止core文件生成
# 查看core及nofile配置
ulimit -a
# 临时禁止core
ulimit -c 0
# 调整文件句柄数
ulimit -n 65535

然后我们重启docker重新启动NLP服务,发现问题依旧存在

3.3 排查是否多进程启动问题

本次的改动中我们新增了多进程支持,搜索signal 4后发现可能与gunicorn有关

# Dockerfile启动命令
ENTRYPOINT ["gunicorn", "--config", "gunicorn.conf.py", "run:app"]

我们绕过Dockerfile多进程启动,采用如下方式启动

# image:tag为镜像名:版本号 run.py为代码启动入库
docker run --entrypoint python image:tag run.py

发现没有任何输出,然后我们docker ps -a查看容器状态

STATUS
Existed (132) 2 minutes ago
3.3 真正解决

不要放过任何一个状态码!!,我们google搜索docker exit 132 tensorflow

我们在StackOverflow中找到如下答案

我们验证指令集是否存在

cat /proc/cpuinfo | grep avx

指令集缺失在我们机器存在,在客户生产环境不存在

我们找了台不存在该指令集的机器,复现出问题现象,如下图

所以,客户这边机器迁移,需保证存在AVX AVX2指令集,问题解决

欢迎关注公众号算法小生,第一时间获取最新干货

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小生Đ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值