使用 nginx + uwsgi + odoo搭建的odoo服务,504 执行时间过长错误

May 21, 2019

harakiri uwsgi 中的计时器

web 应用开发中会有请求被卡的问题。所有的线程/worker 都被卡(被请求堵塞),你的应用再也不能接受更多的请求。为避免这样的问题出现,设置harakir计时器。当进程被卡住的时间超过特定的秒数后就被销毁。

[uwsgi]
http = 0.0.0.0:80
harakiri = 30

调整harakiri参数,防止504发生。

nginx 代理的超时时间

location / {
    proxy_pass http://my_uwsgi_upstream;
    proxy_read_timeout 30s;
    proxy_send_timeout 30s;
}

uwsgi 协议进行通信,nginx 的配置:

location / {
    uwsgi_read_timeout 120s;
    uwsgi_send_timeout 120s;
    uwsgi_pass my_upstrea;
    include uwsgi_params;
}

总结

  1. 504 执行时间过程,nginx 代理的后端程序时间过长,nginx 销毁了执行的进程。
  2. nginx + uuwsgi 采用 uwsgi 协议通信,默认的时间60s,超过该限制,需要设置相应的参数。