nginx的keepalive和keepalive_requests
发布日期:2021-05-08 20:43:04 浏览次数:30 分类:精选文章

本文共 1317 字,大约阅读时间需要 4 分钟。

为了在Nginx作为反向代理时支持长连接,需要确保客户端与Nginx以及Nginx与后端服务器之间的连接均为长连接。具体来说,可以通过以下方式实现:

首先,确保客户端与Nginx之间的连接是长连接。Nginx支持通过keepalive_timeout参数设置客户端长连接的超时值,默认为75秒。该参数可配置为0以禁用长连接,其他情况下默认启用keep-alive机制。此外,keepalive_requests参数用于限制每个长连接上处理的最大请求数量,默认为10000,用于防止资源耗尽。

其次,确保Nginx与后端服务器之间的连接也是长连接。默认情况下,Nginx使用短连接处理请求,这可能导致高负载下后端服务器出现大量TIME_WAIT。此时,需在Nginx配置中添加以下设置:

http {    keepalive_timeout 120s 120s;    keepalive_requests 10000;}upstream BACKEND {    server 192.168.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;    server 192.168.0.2:8080 weight=1 max_fails=2 fail_timeout=30s;    keepalive 300;}server {    listen 8080 default_server;    server_name "";    location / {        proxy_pass http://BACKEND;        proxy_set_header Host $Host;        proxy_set_header x-forwarded-for $remote_addr;        proxy_set_header X-Real-IP $remote_addr;        add_header Cache-Control no-store;        add_header Pragma no-cache;        proxy_http_version 1.1;        proxy_set_header Connection "Keep-Alive";    }}

此外,确保HTTP协议版本为1.1,通过proxy_http_version 1.1设置,并在响应头中设置Connection字段。同时,建议在后端服务器支持长连接的情况下,避免频繁断开连接。

在实际应用中,keepalive参数设置需谨慎,应根据QPS和平均响应时间估算所需长连接数量,通常设置为连接数量的10%到30%。例如,10000 QPS和100ms响应时间下的长连接数量约为1000,建议keepalive设置为100到300。

避免频繁关闭长连接会导致TIME_WAIT问题,需确保后端服务器支持长连接。若后端服务器未配置正确,可能导致大量TIME_WAIT。

本文内容经过优化,旨在提供清晰易懂的技术指导,帮助管理员实现高效的长连接配置。

上一篇:ajax的post请求提交的数据在后端无法用request.getParameter获取的原因分析
下一篇:Linux设置“进程最大可打开的文件数”永久有效的方式,limits.conf,文件句柄数

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月19日 06时06分23秒