uwsgi在1分钟后返回500错误

0 投票
2 回答
1628 浏览
提问于 2025-04-17 13:57

我搭建了一个 nginx+uwsgi+flask 的应用,一切运行得很顺利。但是如果我加载一个页面,然后在1分钟后再加载另一个页面(或者同一个页面),uwsgi 就会返回一个500内部服务器错误,而且日志里没有任何信息。如果我重新加载页面,它又能正常工作。

我注意到,这个问题只发生在请求与上一个进程的同一个 pid 绑定的时候。

这是我用来启动 uwsgi 的命令:

HOSTPATH=/var/www/vhosts/example.com

uwsgi -H $HOSTPATH/httpdocs/venv -x $HOSTPATH/httpdocs/uwsgi.xml -M 4 -t 30 -A 4 -p 4  --pidfile /var/run/uwsgi.pid -d /var/log/uwsgi.log --harakiri-verbose --enable-threads --log-5xx --no-orphans

我的 uwsgi.xml 配置文件:

<uwsgi>
  <socket>127.0.0.1:3031</socket>
  <chdir>/var/www/vhosts/example.com/httpdocs/app</chdir>
  <pythonpath>..</pythonpath>
  <module>wsgi:app</module>
  <master>True</master>
</uwsgi>

还有我的 nginx 配置文件:

server {
    listen 80;
    listen xx.xxx.xxx.xx:80 default_server;

    server_name example.com;
    client_max_body_size 128m;

    location / {
        include         uwsgi_params;
        uwsgi_pass      127.0.0.1:3031;
        proxy_set_header X-Accel-Internal /static;
    }


    location /static {
        alias      /var/www/vhosts/example.com/httpdocs/app/project/static/;
    }
}

有没有人知道这可能是什么原因呢?

2 个回答

0

你确定是uWSGI返回了500错误,而不是nginx在搞事情吗?你能开启flask的调试模式吗?

你有没有查看过这个页面:http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html

顺便问一下,你为什么要把xml配置和命令行参数混在一起呢?

0

我安装了NewRelic,发现错误是因为MySQL超时了。

撰写回答