当前位置: 首页 > 知识库问答 >
问题:

504,nginx无错误日志?

阎祖鹤
2023-07-12

描述:

  1. 提交大数据查询操作,会在2min内出现504报错(时间不定,有时候是1.5min有时候是1.6min)
  2. nginx与gunicorn超时时间同样是600,测试环境设置相同timeout等未复现此问题(不过测试环境未与正式环境100%一致,没有gunicorn),可以执行到4-5分钟乃至更长
  3. nginx error中没有504错误日志

问题:什么原因导致504,往哪个方向大概率复现

技术:
nginx + gunicorn + django

nginx与这个接口相关的错误日志如下,下面这个warn也没看懂,这个配置怎么会报这个warning,错误日志没有504相关内容

2023/07/08 20:42:03 [warn] 5629#5629: *6150342 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000049, client: 10.xxx.xxx.34, server: www.xxx.com, request: "POST /xxx/ HTTP/1.1", host: "www.xxx.com", referrer: "https://www.xxx.com/xxx/"

nginx日志如下:

60.191.37.34 - - [08/Jul/2023:20:43:38 +0800] "POST /xxx/ HTTP/1.1" 499 0 "https://www.xxx.com/submitsql/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "192.168.142.31"

线上ngxin 配置如下
image.png

与此网站相关配置如下
server{
        listen 9100 ssl; # 监听的端口
        server_name www.xxx.com;
        client_max_body_size 2050M; # 处理Request Entity Too Large
        client_body_buffer_size 1024K;
        proxy_read_timeout 600s;  # 超时时间与Gunicorn超时时间设置一致,主要用于在线查询

        ssl_certificate      /etc/xxx/xxx.crt;
        ssl_certificate_key  /etc/xxx/xxx.key;

        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host:9100; # 解决重定向404的问题,和listen端口保持一致,如果是docker则和宿主机映射端口保持一致
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            # websocket support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        location /static {
            alias /data/xxx/static; # 此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
            # alias /data/xxx/static; # 此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
        }
        
        location /web {
            alias /data/xxx/dist/;
            autoindex on;
            index index.html index.htm;
            try_files $uri $uri/ /index.html =404;
        }

        location /documentation {
            #root /home/xxx/documentation/dist/;
            alias /data/xxx/dist/;
            autoindex on;
            index index.html index.htm;
        }

#        error_page 404 /404.html;
#            location = /40x.html {
#        }

#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
}

共有1个答案

公良浩邈
2023-07-12

你上面的警告,你得先增加 client_body_buffer_size 的值,让请求可以被缓存到内存中,而不是写入到磁盘上,增加一下gunicorn的工作进程数量。这样可以让gunicorn能够处理更多的并发请求

 类似资料:
  • 本文向大家介绍nginx 504 Gateway Time-out错误解决方法,包括了nginx 504 Gateway Time-out错误解决方法的使用技巧和注意事项,需要的朋友参考一下 一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 G

  • 本文向大家介绍Nginx服务器中414错误和504错误的配置解决方法,包括了Nginx服务器中414错误和504错误的配置解决方法的使用技巧和注意事项,需要的朋友参考一下 414 Request-URI Too Large 当http 的URI太长或者request header过大时会报414 Request URI too large或400 bad request错误。 可能原因 场景1.c

  • Nginx 错误日志是运维人员最常见但又极其容易忽略的日志类型之一。Nginx 错误日志即没有统一明确的分隔符,也没有特别方便的正则模式,但通过 logstash 不同插件的组合,还是可以轻松做到数据处理。 值得注意的是,Nginx 错误日志中,有一类数据是接收过大请求体时的报错,默认信息会把请求体的具体字节数记录下来。每次请求的字节数基本都是在变化的,这意味着常用的 topN 等聚合函数对该字段

  • 本文向大家介绍一次nginx 504 Gateway Time-out错误排查、解决记录,包括了一次nginx 504 Gateway Time-out错误排查、解决记录的使用技巧和注意事项,需要的朋友参考一下 记一次莫名其妙的网站失去响应排查。之前网站一直是使用nginx做代理后端的apache运行php来提供服务。apache经常会不定期不定时间的出现不能服务失去响应,然后nginx出现"50

  • amh的报504怎么弄

  • 本地开发环境php+nginx出现504超时? 环境:thinkphp6, php7.3,nginx1.15 放大: nginx的请求超时和加载超时