nginx的keepalive和连接超时问题
什么时间开启keepalive
client ---- server
keepalive_disable 是否开启
keepalive_requests keepalive 的连接数了默认是100 过大的数值会造成内存使用量激增不推荐
keepalive_time 最大的keepalive 保持时间(请求一直存在超过这个时间 也会被强制关闭)
keepalive_timeout keepalived 最大允许间隔时间
send_timeout 给服务端回包,超过这个时间没返回强制关闭连接
server ---- upstream
配置在upstream 中的 keepalive
将 proxy_set_header Connection ""; 添加到 Nginx 配置文件中的 http 上下文中,可以确保在使用 keepalive 连接时,Nginx 代理服务器不会将 Connection 标头转发到后端服务器。
这是因为在 HTTP/1.1 中,Connection 标头用于指示客户端或服务器是否希望保持持久连接(即 keepalive 连接)。如果客户端将 Connection 标头设置为 keep-alive,则服务器应继续使用相同的连接来发送响应。
但是,如果将 Connection 标头转发到后端服务器,并且该标头设置为 keep-alive,则后端服务器可能会认为客户端希望保持持久连接,从而导致服务器保持连接打开状态,即使客户端已经关闭连接。这可能会导致后端服务器资源耗尽,从而导致应用程序故障。
通过将 proxy_set_header Connection ""; 添加到配置中,Nginx 代理服务器将不会转发 Connection 标头,从而防止此类问题发生。这是因为将 Connection 标头设置为空字符串会告诉 Nginx 代理服务器在转发请求时删除此标头。
需要注意的是,如果您的后端服务器使用了 HTTP/1.0 协议,则无需将 proxy_set_header Connection ""; 添加到配置中,因为 HTTP/1.0 不支持 keepalive 连接。
客户端请求504
部署diffusion-webui 时 当生成图片请求时间过长(3m)。有个接口总是504 造成服务无法访问
location /run/predict/ {
proxy_set_header Host $host;
proxy_pass http://diffusionx;
proxy_connect_timeout 15000;
proxy_read_timeout 15000;
proxy_send_timeout 15000;
}
本文来自博客园,作者:萱乐庆foreverlove,转载请注明原文链接:https://www.cnblogs.com/leleyao/p/16394509.html
分类:
负载均衡
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下