nginx长连接

nginx长连接

很多参考教程都说设置nginx长连接是设置keepalive_timeout,往往忽视了keepalive_requests,nginx的keepalive_requests默认是100,一个长连接100次和短连接也差不多了。

keepalive_timeout含义

长连接有tcp/ip层面和http层面的,http1.1默认是长连接的,一般也只需要设置http层面的,即keepalive_timeout.

keepalive_timeout time表示一个长连接如果在time秒没有数据传输,nginx将会主动断掉该连接。nginx默认是75s,一般qps比较大时可以将该时间改小,建议timewait状态的连接数。

keepalive_requests含义

keepalvie_requsts 100表示一个长连接最多接收100次数据传输,nginx将会断掉该长连接。nginx默认是100次。

综述

所以,nginx的http层的长连接由上述两个参数共同控制。

实战经验

如果负载均衡使用4层的,开启了长连接,长连接建立起来后,4层的负载均衡并不能控制该连接。如果参数设置不合理,如keepalive_requests比较大时,负载均衡停止一台机器的权重,但该机器上已经建立起来的长连接会在很长一段时间存活,并且这些长连接一直在一个进程,这些会造成负载不均匀问题。

使用7层的负载均衡就无所谓了,因为负载均衡会upstream到后台服务器,负载均衡会与后台服务器建立自己的长连接,会重新分发连接。

阅读更多
文章标签: nginx keepalive
个人分类: nginx
上一篇unordered_map map hash_map
下一篇nginx ngx_http_request_t中uri一次查错
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭