我正在使用 Supervisor 和 uWSGI Emperor 模式。当我设置limit-as
为512
(MB) 时,工作者会立即死亡(重生、死亡、重生、死亡,大约每 3/4 秒一次):
[uwsgi]
workers = 4
threads = 40
limit-as = 512
harakiri = 20
max-requests = 1600
... non-performance/memory/processor-related settings ommitted
但是,如果我改为limit-as
:
[uwsgi]
workers = 4
threads = 40
limit-as = 1024
harakiri = 20
max-requests = 1600
... non-performance/memory/processor-related settings ommitted
并重新启动 uwsgi,问题立即消失。为了掩盖真相,我把设置改回了 512,再次重启,然后问题立即再次出现。
注意:我的应用程序是一个简单的 Django 应用程序,在启动时不需要太多额外的 Python 设置。
答案1
看来 512M 地址空间不足以满足您的应用需求。如果您必须遵守这样的限制,请减少线程数量或使用 thread-stack-size = 512 减少其堆栈大小(512k 通常是 Python 应用的最小数量)