ZEO在主模式下在uWSGI上死锁

时间:2013-01-24 10:53:54

标签: deadlock uwsgi zodb zope3

美好的一天!

我正在迁移到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

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

但是当我这样开始时:

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

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

有人知道任何特定的ZEO行为吗?如果我只运行FileStorage,它会正常运行而不会出现任何死锁。 有关uWSGI行为主模式的任何细节也将受到赞赏。

1 个答案:

答案 0 :(得分:1)

确定。所以我设法发动该死的东西。我怀疑,ZEO的rpc在linux forking中运行不好。因此,您只需要在分叉过程中启动应用程序,而不是在分叉之前启动应用程序。

请参阅uwsgi的lazylazy-apps配置选项。

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