-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
supervisor & gunicorn #18
Comments
本案例的排查过程,为什么给人倒着走的感觉?如果一上来就看 supervisor.log , 问题不就很快就能定位了吗?
|
😆 这里还有一个很好的问题:为什么公司部署规范中,要求 ”wsgi.py 内 wsgi 接口实例以及按要求命名为 application“ 呢? |
supervisord 进程的日志究竟吐到哪里去了? 为啥返回是 /tensorflow-serving/supervisord.log 这么个怪的路径 ? |
今天,在帮用户搞定多语言运行环境的过程中,我自己验证了 ~/.bashrc 和 ~/.bash_profile 的区别。 看来,在公司这种环境下,适合把环境变量配置到 /home/user/.bashrc 这个文件中。 |
背景
AI 团队有个应用,需要手工安装部分组件,其次,除了 python 运行环境还需要 Java 运行环境,因此,CI/CD 的时候,这个应用不能直接基于公司统一的 python 基础镜像来创建部署镜像,得自己团队手工把镜像 push 到 hub 来部署实例。
用我们公共发布系统部署实例的时候,实例总是点火失败,应用的 owner 向我们寻求帮助。
哪些因素影响排障效率
用户和我对 Python 的部署环境,只知道皮毛。
我的关注点一直在:用户是自定义镜像,他自制的镜像是否遵守公司 python 部署规范呢?
用户一开始关注 Java 环境,这一点被我忽略掉了。事后发现后面引入的问题和用户准备这个 Java 环境有直接关系。
问题解决过程
这个应该是用户选择了没有安装组件的某个 python 版本导致的。当我搭建测试环境帮用户查找问题的时候,我发现并没有这个问题。估计用户自己搞定了。
这个用户一看是编码的问题,把文件里面的中文改为英文后,不再报错。
我上网查了,告诉用户,可以加个 --preload ,会有 gunicorn 详细报错。
/opt/app/.venv/bin/python3 /opt/app/.venv/bin/gunicorn -c /etc/gunicorn.conf.py --preload wsgi:application
用户的构建目录和文件、以及 wsgi.py 内 wsgi 接口实例以及按要求命名为 application。
在这个时候,逼着我把和 web 服务运行相关的一些东西搞搞清楚。
root 12 1 0 Jun07 ? 00:00:14 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
为何总是没有 python 的进程呢?并且 gunicorn.log 没有内容。估计,实例启动后,gunicorn 就没在工作。
真实好主意,我感觉解决问题的思路越来越清晰了。
find / -name supervisor.log
用户为了设置 Java 运行环境,修改了 /etc/profile 文件,并且在 /etc/supervisord.d/gunicorn.ini 文件中增加了下面的内容:
command=source /etc/profile && /opt/app/.venv/bin/gunicorn -c /etc/gunicorn.conf.py wsgi:application
这就是 supervisor.log 报错的原因了。
The text was updated successfully, but these errors were encountered: