我正在运行 cherokee 以使用 uwsgi 为 django 应用程序提供服务。自从升级到 cherokee 1.2.x 后,我一直有一些奇怪的行为。
该设置在 cherokee 1.2.x 之前运行良好,我没有更改任何配置。
问题是现在,当 uwsgi 没有运行并且我尝试加载 django 应用程序站点时,我首先收到 503 错误。后续请求工作正常。查看日志,我看到 cherokee 正在生成多个 uwsgi 实例,这似乎是问题所在。
看来 cherokee 正在产生多个 uwsgi 实例:
probably another instance of uWSGI is running on the same address.
我对 uwsgi 的配置是:
<pidfile>/home/my_home/my_project/uwsgi.pid</pidfile>
<vacuum />
<processes>4</processes>
<harakiri>30</harakiri>
<master />
问题的另一个症状是在 503 和随后成功启动 uwsgi 之后,我没有 PID 文件。这是因为 uwsgi 的其他实例启动然后失败,在它们退出时会删除 PID 文件:
binding on TCP port: 45611
probably another instance of uWSGI is running on the same address.
bind(): Address already in use [socket.c line 341]
VACUUM: pidfile removed.
所以总的来说,问题是:
- 切诺基启动uwsgi后第一个视图显示503
- 没有创建 PID 文件(或者说它正在创建但立即被另一个退出的 uwsgi 进程删除)
谷歌搜索probably another instance of uWSGI is running on the same address
仅与 uwsgi 源代码匹配,所以看来我是唯一遇到这种情况的人。
我在具有相同设置的多台计算机上遇到同样的问题。
有任何想法吗?
软件版本:
- uWSGI 0.9.6.2
- 切诺基 1.2.1
- Django 开发主干(介于 1.3 rc 和 1.3 之间)