0

再会!

我正在迁移到 uWSGI 部署。该项目一半在 ZOPE3 上,并使用 ZODB 和 ZEO 进行多路访问。如果我像这样启动 uwsgi 守护进程:

uwsgi_python27 --http :9090 --wsgi-file /path/to/file

一切运行正常。这是单进程模式。没有块或锁。当我像这样启动应用程序时:

uwsgi_python27 --http :9090 --wsgi-file /path/to/file -p 3

一切都运行。这是预分叉模式。我们有很好的结果。但是有些请求会阻塞。我怀疑应用程序在新实例启动时会阻止 1 个请求。我有 2-3 个锁定请求。所有其他工作都很好。

但是当我这样开始时:

uwsgi_python27 --http :9090 --wsgi-file /path/to/file --master

应用程序启动,但未处理任何请求。当我 curl localhost:9090/some_page 它永远不会加载任何东西。没有 CPU 没有磁盘使用。它只是锁定。

有人知道任何可能导致这种情况的特定 ZEO 行为吗?如果我只运行 FileStorage,它会正常运行而不会出现任何死锁。有关 uWSGI 行为的主模式的任何细节也将不胜感激。

4

1 回答 1

1

行。所以我设法启动了该死的东西。我怀疑,ZEO 的 rpc 与 linux 分叉不兼容。所以你只需要在分叉的进程中启动应用程序,而不是在分叉之前。

请参阅uwsgi 的惰性惰性应用程序配置选项。

参考:http ://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html

于 2013-01-28T16:12:02.433 回答