错误信息:
uWSGI worker 5 screams: UAAAAAAH my master disconnected: i will kill myself !!!
我使用 uWSGI 作为服务器来在 Ubuntu 12.04 上保存我的金字塔应用程序
答案1
主人死亡的原因有很多,通常主人的死亡由用户决定,但如果由于某种原因主人突然死亡,工人必须跟随他。由于工人(还是个孩子)无法知道发生了什么,所以你不能指望得到更多信息。
一个常见的错误是向主服务器发送 KILL 来重启/销毁 uWSGI,这将导致工作进程“孤立”。通常主服务器的死亡应该在日志中报告(如果发生内存损坏,则带有回溯),也许如果你粘贴它们,我们就能找到原因。
答案2
通过谷歌搜索,我发现此变更集(目前仅在 Google 的缓存中可用)并且uwsgi_receive_signal()
该错误消息已添加到signal.c
。当前版本的代码在这里。
如果read()
调用返回 0(表示读取了 0 个字节),则主进程出现问题,工作进程应退出。如果返回值小于 0,则表示出现错误,工作进程应退出。如果返回值大于 0,则属于正常情况,应处理信号。
似乎没有办法区分工人正常退出和导致工人退出的错误,因为两种情况下都会记录相同的消息,所以无法确定你的问题“它是如何发生的”的答案。
孩子们,这就是为什么日志消息很重要。
正如@roberto 提到的,日志中可能有其他消息包含更多有用的信息。