问题描述:
后端代码查询缓慢,导致接口请求超时异常Status Code: 504 Gateway Time-out
解决方案
修改ngnix配置文件,增加超时时间
server {
location / {
...
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
proxy_read_timeout 1800;
...
}
}
- proxy_connect_timeout:定义与后端服务器建立连接的超时时间,单位为秒。在超过指定时间后仍无法建立连接,代理服务器将中断连接并返回错误。
- proxy_send_timeout:定义向后端服务器发送请求的超时时间,单位为秒。如果发送请求的时间超过指定超时时间,代理服务器将中断连接并返回错误。
- proxy_read_timeout:定义从后端服务器接收响应的超时时间,单位为秒。如果从后端服务器接收响应的时间超过指定超时时间,代理服务器将中断连接并返回错误。
配置以上内容即可解决问题
其它有关ngnix超时配置参数介绍
http {
...
fastcgi_connect_timeout 3000;
fastcgi_send_timeout 3000;
fastcgi_read_timeout 3000;
...
}
- fastcgi_connect_timeout:定义与 FastCGI服务器建立连接的超时时间,单位为毫秒(ms)。在超过指定时间后仍无法建立连接,Web 服务器将中断连接并返回错误。
- fastcgi_send_timeout:定义向 FastCGI服务器发送请求的超时时间,单位为毫秒(ms)。如果发送请求的时间超过指定超时时间,Web 服务器将中断连接并返回错误。
- 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 秒,可进行修改。