Nginx解决接口请求超时方案

news/2024/7/7 21:47:29 标签: nginx, 前端, linux

问题描述:

后端代码查询缓慢,导致接口请求超时异常
Status Code: 504 Gateway Time-out

解决方案

修改ngnix配置文件,增加超时时间

server {
	location / {
		...
		proxy_connect_timeout   1800;
		proxy_send_timeout      1800;
		proxy_read_timeout      1800;
		...
	}
}
  1. proxy_connect_timeout:定义与后端服务器建立连接的超时时间,单位为秒。在超过指定时间后仍无法建立连接,代理服务器将中断连接并返回错误。
  2. proxy_send_timeout:定义向后端服务器发送请求的超时时间,单位为秒。如果发送请求的时间超过指定超时时间,代理服务器将中断连接并返回错误。
  3. proxy_read_timeout:定义从后端服务器接收响应的超时时间,单位为秒。如果从后端服务器接收响应的时间超过指定超时时间,代理服务器将中断连接并返回错误。

配置以上内容即可解决问题

其它有关ngnix超时配置参数介绍

http {
    ...
    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    ...
}
  1. fastcgi_connect_timeout:定义与 FastCGI服务器建立连接的超时时间,单位为毫秒(ms)。在超过指定时间后仍无法建立连接,Web 服务器将中断连接并返回错误。
  2. fastcgi_send_timeout:定义向 FastCGI服务器发送请求的超时时间,单位为毫秒(ms)。如果发送请求的时间超过指定超时时间,Web 服务器将中断连接并返回错误。
  3. fastcgi_read_timeout:定义从 FastCGI 服务器接收响应的超时时间,单位为毫秒(ms)。如果从 FastCGI服务器接收响应的时间超过指定超时时间,Web 服务器将中断连接并返回错误。

FastCGI 和后端服务器区别:

  • FastCGI 进程是一个特定用途的进程,专门用于处理动态内容的生成和处理,通常作为 Web 服务器的插件或扩展。
  • 后端服务器是一个更通用的概念,指代提供服务的实际服务器,包括各种类型的服务组件,不仅限于 FastCGI 进程
http {
    ...
	keepalive_timeout  100;
    ...
}

keepalive_timeout:参数定义了 Keep-Alive 连接的最大空闲时间,即在一个 Keep-Alive 连接上没有数据交换时,服务器将保持连接打开的时间。一旦超过这个时间仍然没有数据交换,服务器将关闭该连接。

一般来说,合适的 keepalive_timeout 可以提高性能和减少延迟,但设置过长可能会消耗服务器资源。通常情况下,建议根据实际情况和负载情况来调整 keepalive_timeout 的数值。常见的配置包括:

  • 当网站访问量较大时,可以适当增加 keepalive_timeout,以减少连接建立的开销,提高性能。
  • 若服务器资源有限或者需要及时释放连接资源时,可以适当缩短 keepalive_timeout

Nginx 中的默认值通常是 75 秒,可进行修改。


http://www.niftyadmin.cn/n/5395399.html

相关文章

Typora结合PicGo + 使用Github搭建个人免费图床

文章目录 一、国内图床比较二、使用Github搭建图床三、PicGo整合Github图床1、下载并安装PicGo2、设置图床3、整合jsDelivr具体配置介绍 4、测试5、附录 四、Typora整合PicGo实现自动上传 每次写博客时,我都会习惯在Typora写好,然后再复制粘贴到对应的网…

c# Dispose资源释放

资源类型 托管资源:由CLR建立和释放 非托管资源:资源的建立和释放不禁CLR管理。好比IO、网络链接、数据库链接等等。须要开发人员手动释放。 如何释放 调用的是微软类库或者第三方类库,通常类库会提供释放的方法,即约定为Disp…

【LeetCode】377. 组合总和 Ⅳ(中等)——代码随想录算法训练营Day44

题目链接:377. 组合总和 Ⅳ 题目描述 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums…

Java WEB面试系列-02

1. Servlet 中如何获取 Session 对象? 使用HttpServletRequest对象的getSession方法获取session,通过getCookies获取Cookie。 2. Servlet 中过滤器有什么作用? Servlet监听器对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码。可以对应用的加载、卸载,对…

Selenium 模拟浏览器操作案例

Selenium 是一个非常流行的自动化测试工具,它允许你模拟浏览器操作,如点击、输入、滚动等。以下是一个使用 Python 和 Selenium 模拟浏览器操作的简单案例: 首先,确保你已经安装了 Selenium 和相应的浏览器驱动(如 Ch…

PyQt 逻辑与界面分离

将逻辑与界面分离是一种良好的软件设计实践,可以提高代码的可维护性和可扩展性。在使用 pyuic 工具转换 Qt Designer 的 .ui 文件时,你可以通过以下方式实现逻辑与界面的分离: 创建一个单独的 Python 模块,用于编写主窗口的逻辑代…

Pandas读取两个excel并join

Pandas 的 join就是merge,代码如下 import pandas as pd #读取两张表 dfpd.read_excel(“左表”) #读取右表的第三个sheet中的数据 df2pd.read_excel(“右表”,sheet_name“Sheet3”) #以左表为主表,左连接 outpd.merge(df ,df2 ,on‘query’ ,how‘lef…

android stadio通过wifi热点 adb连接android

问题:有时后忘记带android usb线了,但需要调试 解决办法: 1、准备开发工具adb,需要到sdk下的platform-tools的目录下,或者把这个目录加到系统path里,我的是D:\android\sdk\platform-tools这个目录&#x…