记一次nginx 504排查

NGINX(十四)404/502/504状态码常见错误排查 先确认资源是否存在(路径是否正确、大小写是否匹配);再检查location配置顺序(具体路径放前面,避免被通用规则覆盖);最后排查权限问题(Nginx用户是否有目录x权限和文件r权限)。先看Nginx错误日志,重点关注upstream相关信息(如检查后端服务是否运行(端口是否监听);确认proxy_pass地址/端口是否正确;若后端运行正常,排查后端服务是否崩溃(查看后端自身日志)。先看Nginx错误日志,确认是(连接超时)还是(读取响应超时);测试后端处理耗时。 阅读详情

有一个导出接口,由于里面组装数据会很慢,直接表现为504 Gateway Time-out,时间为2min,梳理了下调用的链路,nginx -> spring gateway -> business server,里面打开了nginx的配置,如下:

#user  nobody;
worker_processes  4;

error_log  /app/openresty/nginx/logs/error.log  error;
pid        /app/openresty/nginx/logs/nginx.pid;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;


events {
    worker_connections 65536 ;
}


http {
    include       mime.types;
    include       custom_upstream.conf;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr|$remote_user|[$time_local]|"$request"'
                      '|$status|$request_time|$body_bytes_sent|"$http_referer"'
                      '|"$http_user_agent"|"$http_x_forwarded_for"|$upstream_response_time|$upstream_status';    
    access_log  /app/openresty/nginx/logs/access.log  main;
    
    server_tokens   off;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    client_max_body_size 100m;
    client_header_buffer_size 100m;
    keepalive_timeout  120;
    proxy_send_timeout 120;
    proxy_read_timeout 120;
    proxy_buffering off;
    gzip on;

    server {
        listen       80;
        server_name  localhost;

        listen 443 ssl;
        ssl_certificate_key /app/openresty/nginx/conf/key/sf.key;
        ssl_certificate /app/openresty/nginx/conf/key/sf.crt;

        #charset koi8-r;

        include       custom_location.conf;

        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
		location = /50x.html {
            root   html;
        }

        location = /nstats {
            check_status;
            access_log      off;
            allow           10.116.0.0/16;
            allow           10.110.0.0/16;
            allow           10.117.0.0/16;
            allow           10.150.0.0/16;
            allow           100.0.0.0/8;
            allow           10.0.0.0/8;
            deny            all;
        }
    }
}
	location / {
		root   html;
		index  index.html index.htm;
	}
	

	location ^~ /foo {
		proxy_pass http://bar:8080;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Cookie $http_cookie;
		index index.html index.jsp login.jsp index.htm;    
	}

配置经过处理,已替换成foo,bar

果然在配置中找到了2min的配置,我们的接口是一个导出的接口,自然是跟响应有关,说干就干,那就简单了,改成30min分钟。

    keepalive_timeout  120;
    proxy_send_timeout 120;
    proxy_read_timeout 120;

为了不影响其他接口,这里我们新增了一个精确匹配的路由

    location = /foo/downloaddatafile {

        proxy_pass http://bar:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Cookie $http_cookie;
        keepalive_timeout  120;
        proxy_send_timeout 120;
        proxy_read_timeout 1800;        
    }

重启一波,点击导出,依然是504,这次的超时竟然还变短了,1min.what???这是什么情况。

只能打开浏览器的respose,很幸运是有东西的,提示我们去检查nginx的error.log.

好的,那我们就去看看吧,关键信息:[error] 33#0: *703 upstream timed out (110: Connection timed out)

度娘告诉我们需要改缓冲配置。

 

    location = /aom-asset-repair/repair/downloaddatafile {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Cookie $http_cookie;
        keepalive_timeout  120;
        proxy_send_timeout 120;
        proxy_read_timeout 1800;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffer_size 64k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_pass http://bar:8080;
    }

写在最后:

1. proxy_pass配置的顺序为啥会影响其他配置项生效?

2.导出这种慢操作,建议优化成异步处理,后台异步处理时,可以使用多线程。

 

OpenResty最佳实践 在2012年的时候,加入到奇虎360公司,为新的产品做技术选型。由于之前一直混迹在 python 圈子里面,也接触过 nginx c 模块的高性能开发,一直想找到一个兼备 python 快速开发和 nginx c 模块高性能的产品。看到 OpenResty 后,有发现新大陆的感觉。 立即下载

相关推荐

HALCON深度学习模型部署新选择:一份详细的OpenVINO 2021.4 LTS集成与配置避坑指南

本文详细介绍了如何将HALCON深度学习模型与OpenVINO 2021.4 LTS集成,提供环境配置、硬件加速优化及故障排除的实用指南。特别针对Intel独立显卡的AI加速器接口进行优化,帮助机器视觉工程师提升AI推理效率,适用于工业检测等高要求场景。

weixin_42531779的博客 238

openresty nginx的请求访问windows上的tomcat报504

usr/local/openresty/lualib/common.lua内容如下。openresty上的nginx的nginx.conf内容如下。# 响应结果由lua/item.lua文件来决定。server 虚拟机IP:8081;windows的nginx.conf文件内容如下。

weixin_44478828的博客 532

间充质干细胞衰老机制与抗衰老干预策略研究

干细胞技术在再生医学领域具有广阔应用前景,其中间充质干细胞(MSCs)因其多向分化潜能和免疫调节特性备受关注。细胞衰老是影响干细胞治疗效果的共性难题,表现为增殖能力下降、端粒缩短等特征。通过表观遗传学分析发现,衰老MSCs存在DNA甲基化异常和组蛋白修饰改变;线粒体功能障碍导致ATP产量锐减,ROS累积显著增加。针对这些机制,研究者开发了包括小分子化合物筛选、CRISPR基因编辑和三维培养优化在内的多种干预策略。这些技术在组织修复、抗衰老治疗等应用场景中展现出重要价值,例如可提升心肌梗死修复效率2.3倍,缩

weixin_33502772的博客 227

504 Gateway Time-outopenresty

504 Gateway Time-out 是HTTP状态码之一,通常表示服务器作为网关或代理收到了请求,但在尝试完成请求的过程中超出了合理的时间限制。服务器响应延迟:如果后端服务器处理请求的速度过慢,超过了OpenResty设置的超时时间(默认大约60秒),就会返回504错误。网络问题:客户端与后端服务器之间的连接不稳定或网络延迟过高,可能导致OpenResty在等待响应时超时。配置问题:OpenResty配置文件中可能设置了较短的超时值,需要检查Nginx配置的等参数是否足够长。资源限制。

小镇做题家 2296

保姆级教程:用torch.profiler给你的vLLM推理做个“全身体检”(附Perfetto可视化分析)

本文提供了一份详细的vLLM推理性能分析教程,通过torch.profiler和Perfetto工具链实现从数据采集到可视化分析的全流程。文章涵盖了环境配置、性能数据采集、trace文件解析以及Perfetto可视化分析,帮助开发者优化大模型推理服务的性能,显著降低计算资源消耗。

weixin_29041767的博客 357

Dify 从入门到精通:第一篇 - 基础介绍与快速上手

Dify是一个开源的低代码平台,旨在简化大型语言模型(LLM)应用的开发流程。本文作为"Dify从入门到精通"系列的首篇,全面介绍了Dify的核心概念、安装步骤和基本使用方法。文章首先解析了Dify的多模型支持、低代码开发等特点,然后详细讲解了基于Docker的安装配置过程,包括系统要求、环境变量设置等。通过创建一个邮件助手应用的实际示例,展示了Dify的可视化工作流设计功能。最后简要介绍了高级特性和最佳实践,为后续深入学习奠定基础。本文为开发者提供了从零开始使用Dify构建AI应用的完

IT深耕十余载,大道之简 1147

nginx 504超时 主要是uwsgi 连接数不够用

1.首先先看一下nginx.conf里影响处理的配置。    user nginx; worker_processes  xx;  #可以设置成cpu个数,体验较佳的性能 error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid; worker_rlimit_nofile 65535; # 最大打开文件数,这

前端开发&搜索引擎优化 3261

数据结构之栈(Stack)的实现详解

堆栈是一种线性数据结构,其插入新元素和删除现有元素都发生在堆栈的顶部。栈(Stack)按照"后进先出"(Last-In-First-Out,LIFO)的原则存储和访问数据。栈类似于现实生活中的堆叠物体,比如一摞书或者一堆盘子。

swadian2008的博客 3812

HTTP状态码504(Gateway Timeout)报错原因分析和解决办法

HTTP状态码504表示"Gateway Timeout",这是一种服务器错误响应代码。 当我们访问网页遇到504错误时,意味着HTTP请求无法在服务器预定的时间内得到响应。

par@ish的博客 15万+

Unity海康视屏对接

通过对接海康SDK,获取视屏流回调。经过解码得到YUV格式的图片,最后通过Shader把YUV数据显示出来。也可以通过Rtsp协议,直接获取视屏流显示。这个貌似Unity中已经有插件支持了,UMP。------2018.4.20using UnityEngine;using System.Collections;using System;using UnityEngine.UI;using Sys...

Witness_K的博客 2028

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲到使用WidgetComponent和3DUI进行交互。然而,这种方法存在一个问题:为了让射线可视化,我们需要勾选“调试/显示调试”,这样才能在手柄上看到代表其指向的一条红色射线。但最关键的问题是,这个显示调试信息的功能只属于Debug调试模式,也就是说,一旦将项目正式打包发布,这条射线辅助线就没有了。如下图所示:我就觉得Unreal官方真的是有点过分了,这不应该是最基本的功能么?难道我们VR要在Debug模式下发布?

TxNet 1612

504 Gateway Time-out解决方法

504 Gateway Time-out就字面意思,我们可以理解为网页请求超时,也就是浏览网站网页所发出的请求没有反应或者未响应,在网站程序层面来说,就是请求未能够执行相应的PHP-CGI程序,或者PHP-CGI程序未能做出相应的处理,又或者是CGI程序的响应处理结果未能够反馈到浏览器或者未能及时反馈到浏览器。 是由于nginx默认的fastcgi进程响应缓冲区太小造成: 这种情况下导致fast...

qq_43331910的博客 18万+

【专栏必读】王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记使用说明及章节导航

本文档汇总了王道考研408计算机网络和湖科大教书匠计算机网络课程的重点内容,包括计算机网络体系结构、物理层、数据链路层、网络层、传输层和应用层的详细讲解。通过ISO/OSI和TCP/IP模型,深入探讨了通信基础、介质访问控制、IP地址、TCP/UDP协议、流量控制和网络编程等关键概念。此外,还提供了Linux网络编程实践,帮助读者巩固理论知识

快乐江湖的博客 2万+

别光调Nginx超时!记一次Java项目部署后,域名访问504但IP正常的排查实录

本文记录了Java项目部署后域名访问504但IP正常的排查过程,深入分析了504 Gateway Timeout错误的本质,并提供了系统性排查工具链和解决方案。文章特别强调了DNS缓存、负载均衡健康检查及防火墙规则等常见陷阱,帮助开发者快速定位和解决类似问题。

weixin_33736832的博客 177

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

记一次网站故障排查过程(nginx 504状态码、 upstream timed out (110: Connection timed out)以及jbd2引起IO高

一、问题描述 客户侧反馈无法正常访问系统,页面转圈,时好时坏,访问不稳定。 二、系统环境: 机器环境:UOS 、 nginx 、php(对接其他服务器kingbase 、钉钉、redis 、KF) ELB:192.168.1.100 web1: 192.168.1.101 ,web2: 192.168.1.102 三、流量流向示意: 用户访问系统 > ELB > nginx > web1/web2 四、排查过程 4.1 1、按巡检项检查系统所要启动的端口和服务,均已启动。 2、检查

Nightwish5的博客 4043

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JAVA开发(记一次504 gateway timeout错误排查过程)

最近在发布一个web项目,在测试环境都是可以的,发布到生产环境通过IP访问也是可以的,但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通,域名却不行,百思不得其解。通过一顿百度搜索,解析说通过nginx配置文件配置这几个地方

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

当 Nginx 出现 504 错误,如何解决?

用通俗易懂的话来说,504 错误就是“网关超时”。就好比你去商店买东西,你告诉售货员你要的商品,售货员去仓库取货,但是等了很久都没回来,这就是 504 错误。在 Nginx 中,当它作为反向代理向后端服务器请求数据时,如果在规定的时间内没有得到响应,就会返回 504 错误给客户端。Nginx 504 错误虽然令人头疼,但只要我们找到问题的根源,对症下药,就一定能够解决。同时,通过采取预防措施,能够将问题扼杀在摇篮里,保障系统的稳定运行,为用户提供流畅的服务。记住,解决问题就像打仗,要知己知彼,才能百战百胜。

发现生活,分享智慧,一起成长! 4938

因nginx配置导致http访问504处理

因nginx配置导致http访问504处理 文章目录因nginx配置导致http访问504处理一、问题描述二、问题分析三、问题解决四、扩展 一、问题描述 最近排查项目问题,发现这样的情况: http请求服务,页面很快(很快,并没有过多等待)返回504(gateway timeout)失败,检查服务其实是正常的,只是处理时间偏长。 二、问题分析 其实错误很明显,http超时了,但页面等待时间很短就报...

panda-star的博客 2万+

[Nginx排查] 504 Gateway Time-out 错误频发?原因分析与超时参数调优指南

在使用Nginx作为Web服务器或反向代理时,504 Gateway Time-out错误是常见且棘手的问题。该错误通常表示Nginx已成功将请求转发给后端应用服务器,但后端在Nginx设定的超时时间内未能及时响应。本文详细解释了504错误的含义,并提供了排查和解决该错误的步骤。首先,区分504与502错误,明确504是后端响应超时,而502是后端服务不可达或返回无效响应。接着,通过初步排查(如刷新页面、检查服务器负载、确认Nginx服务状态)和深入分析后端应用性能瓶颈(如代码效率、数据库查询、外部API调

Clownseven的博客 4789

记一次 nginx 504 Gateway Time-out

今天程序在执行一项excel导出任务的时候 出现了nginx超时的提示 nginx 504 Gateway Time-out 排查过程: 查看该任务 发现内容是一个数据量20000条信息 每条信息有50个字段 在执行导出为excel的时候 出现了该问题 执行时间大概在10分钟左右就出现超时 分析: Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有...

sinat_29193161的博客 415

nginx常见问题(五):502 与 504 错误详解及排查指南

502 和 504 错误是 Nginx 代理服务中常见的两类问题,分别对应上游服务器无效响应和响应超时。排查时应遵循 "先验证上游服务状态,再检查 Nginx 配置,最后分析系统资源" 的顺序。建议在生产环境中配置完善的监控系统,实时监测服务状态和性能指标,以便及时发现和解决潜在问题。Nginx 作为反向代理服务器时,502(Bad Gateway)和 504(Gateway Timeout)错误是常见的两类问题,分别对应不同的故障场景。以下从错误定义、常见原因到排查步骤进行详细解析。

sre救赎之路 4093

记一次504 Gateway Timeout处理过程

服务器使用Nginx作为负载均衡,第三方先访问负载均衡地址,再转发到实际服务器第三方访问时卡死,最后出现了504 Gateway Timeout(网关超时)

java_x_b的博客 1480

业务前端界面报错504排查思路和解决办法

查看Nginx源码当客户端主动关闭链接时,http状态代码中没有可以表示该状态的,但在nginx又需要记录,所以自定义了一个499这个状态来表示。***/所以显然,客户端端主动关闭请求或者客户端网络断掉时,于是nginx就记录了499状态,并且断开了和后面服务端的连接(这样可能导致服务端返回数据时,因为连接断开而报错)img解决499问题1、查看服务端为什么响应这么慢,是否需要优化,或者调大客户端方的连接超时时间,不那么快断开2、proxy_ignore_client_abort参数调整。...

wanger5354的博客 1万+

一次线上ngix的504 gateway timeout排查(真实案例)

在上周某天6点的时候,同事A,过来找了我!!!(内心:该死的下班6点)同事A说:“阿深,你好呀,有个问题,可以帮我看下嘛?我:“嗯嗯,行。”(屁颠屁颠就去到了同事A的工位)我内心:“这,我还能拒绝嘛?什么鬼玩意,怎么总是在下班的时候找我?然后看到同事A,正在远程实施人员B的电脑,处理某个网站的问题。同事A就说:“我这边通过nginx+tomcat的环境下,通过域名访问网站,出现页面某个请求,超过15s的时候,就会出现504 gateway timeout的问题”。

AlbenXie的博客 900

解决 Nginx + PHP-FPM 环境下 WordPress 出现 504 网关超时错误

造成 WordPress 出现 504 网关超时错误的原因可能有多种,在我这个案例中,主要原因是 PHP-FPM 的进程数设置太少,导致请求排队,超过了 Nginx 的 fastcgi 超时时间。此外,Nginx 配置文件中重复的指令也导致了 Nginx 无法正常启动。检查 Nginx 错误日志,定位问题检查 PHP-FPM 服务状态检查 Nginx fastcgi 超时设置检查 PHP-FPM 进程数设置检查 Nginx 配置文件,解决重复的指令。

re_xue的博客 2396
上一篇: SpringBoot log4j2日志追踪
下一篇: 记一次接口授权导致的500异常排查
路飞说AI
博客等级 码龄10年 214粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值