Имам приложение на Pyramid. Пускам го в uWSGI с тази конфигурация:
[uwsgi]
socket = mysite:8055
master = true
processes = 4
vacuum = true
lazy-apps = true
gevent = 100
И конфигурация на nginx:
server {
listen 8050;
include uwsgi_params;
location / {
uwsgi_pass mysite:8055;
}
}
Обикновено всичко е наред, но понякога uWSGI убива работници. И нямам идея защо.
Виждам в регистрационните файлове на uWSGI:
DAMN ! worker 2 (pid: 4247) died, killed by signal 9 :( trying respawn ...
Respawned uWSGI worker 2 (new pid: 4457)
но в регистрационните файлове няма изключения на Python.
понякога виждам в регистрационните файлове на uWSGI:
invalid request block size: 11484 (max 4096)...skip
[uwsgi-http key: my site:8050 client_addr: 127.0.0.1 client_port: 63367] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 614]
И nginx errors.log:
*13388 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1,
*13955 recv() failed (104: Connection reset by peer) while reading response header from upstream, client:
Мисля, че това може да бъде решено чрез добавяне на buffer-size=32768, но е малко вероятно поради това uWSGI убива работници.
Защо uwsgi може да убива работници? И как да знам причината? Редът "ПО дяволите! работник 2 (pid: 4247) умря, ..." не казва нищо.