美好的一天!
我正在迁移到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行为主模式的任何细节也将受到赞赏。
答案 0 :(得分:1)
确定。所以我设法发动该死的东西。我怀疑,ZEO的rpc在linux forking中运行不好。因此,您只需要在分叉过程中启动应用程序,而不是在分叉之前启动应用程序。
参考:http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html