阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx后端服务大量TIME-WAIT的解决

221次阅读
没有评论

共计 1007 个字符,预计需要花费 3 分钟才能阅读完成。

原因

在 HTTP1.1 协议中,有个 Connection 头,Connection 有两个值,close 和 keep-alive,这个头就相当于客户端告诉服务端,服务端你执行完成请求之后,是关闭连接还是保持连接,保持连接就意味着在保持连接期间,只能由客户端主动断开连接。还有一个 keep-alive 的头,设置的值就代表了服务端保持连接保持多久。

HTTP 默认的 Connection 值为 close,那么就意味着关闭请求的一方几乎都会是由服务端这边发起的。那么这个服务端产生 TIME_WAIT 过多的情况就很正常了。

虽然 HTTP 默认 Connection 值为 close,但是现在的浏览器发送请求的时候一般都会设置 Connection 为 keep-alive 了。所以,也有人说,现在没有必要通过调整参数来使 TIME_WAIT 降低了。

参考:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

nginx 到后端的默认配置

Passing Request Headers
By default, NGINX redefines two header fields in proxied requests,“Host”and“Connection”,
and eliminates the header fields whose values are empty strings.“Host”is set to the $proxy_host variable,
and“Connection”is set to close.

nginx 到后端默认的 HTTP 版本

Syntax:proxy_http_version 1.0 | 1.1;
   
Default:proxy_http_version 1.0;
   
Context:http, server, location
   
This directive appeared in version 1.1.4.

参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version

Nginx 到后端不开启 keepalive 的原因

keepalive 的数量很难设置的准确,偏小的话就没啥作用 偏大的话会影响 worker 的短连接处理,都是内网 tcp 连接的过程耗时应该可忽略吧,== 但是带来的问题可能会造成后端服务的 TIME-WAIT 增多

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1007字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中