Open unaheidi opened 3 years ago
本案例的排查过程,为什么给人倒着走的感觉?如果一上来就看 supervisor.log , 问题不就很快就能定位了吗?
🤣 思考了一下,原因如下:
😆 这里还有一个很好的问题:为什么公司部署规范中,要求 ”wsgi.py 内 wsgi 接口实例以及按要求命名为 application“ 呢?
😃 其实这个就是公司 python 部署的约定,用相同的配置文件启动 web 服务罢了。看一下 /etc/supervisord.d/gunicorn.ini 文件就能发现这个小密码了。
supervisord 进程的日志究竟吐到哪里去了?
这个问题可以抽象为:linux 系统上某个进程,日志吐到哪里怎么查看呢?
lsof -p 进程id | grep .log
为啥返回是 /tensorflow-serving/supervisord.log 这么个怪的路径 ?
今天,在帮用户搞定多语言运行环境的过程中,我自己验证了 ~/.bashrc 和 ~/.bash_profile 的区别。
容器中把 java 执行路径等环境配置项分别写在 /home/user/.bashrc 和 /home/user/.bash_profile 这两个文件,然后创建镜像A和 镜像B 。
基于镜像A创建的容器,通过公司堡垒机用管理员账号登录后,切换到 user,发现 java 可用。
基于镜像B创建的容器,通过公司堡垒机用管理员账号登录后,切换到 user,发现 java 不可用。
看来,在公司这种环境下,适合把环境变量配置到 /home/user/.bashrc 这个文件中。
背景
AI 团队有个应用,需要手工安装部分组件,其次,除了 python 运行环境还需要 Java 运行环境,因此,CI/CD 的时候,这个应用不能直接基于公司统一的 python 基础镜像来创建部署镜像,得自己团队手工把镜像 push 到 hub 来部署实例。
用我们公共发布系统部署实例的时候,实例总是点火失败,应用的 owner 向我们寻求帮助。
哪些因素影响排障效率
用户和我对 Python 的部署环境,只知道皮毛。 我的关注点一直在:用户是自定义镜像,他自制的镜像是否遵守公司 python 部署规范呢? 用户一开始关注 Java 环境,这一点被我忽略掉了。事后发现后面引入的问题和用户准备这个 Java 环境有直接关系。
问题解决过程
/opt/app/.venv/bin/python3 /opt/app/.venv/bin/gunicorn -c /etc/gunicorn.conf.py --preload wsgi:application
command=source /etc/profile && /opt/app/.venv/bin/gunicorn -c /etc/gunicorn.conf.py wsgi:application
这就是 supervisor.log 报错的原因了。