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 中配置长连接(Keep-Alive)有两个方面需要考虑:客户端和服务器端。 首先,需要在客户端配置支持长连接。大多数现代浏览器默认支持长连接,但你可以通过以下方式确保客户端支持长连接: 1. 在 HTML 页面的头部添加以下代码: ``` <meta http-equiv="Connection" content="Keep-Alive"> ``` 2. 在 HTTP 请求头中添加以下字段: ``` Connection: Keep-Alive ``` 接下来,需要在 Nginx 服务器端进行配置以支持长连接。打开 Nginx 配置文件(一般是 nginx.conf),并进行以下更改: 1. 在 `http` 配置块中添加以下指令,以启用长连接: ``` keepalive_timeout 65; keepalive_requests 100; ``` `keepalive_timeout` 指定了每个连接的最大空闲时间(以秒为单位),超过该时间后将关闭连接。`keepalive_requests` 指定了在关闭连接之前最大允许的请求数。 2. 在 `server` 或 `location` 配置块中,可以根据需要进一步调整长连接的设置。例如,可以使用以下指令设置长连接的超时时间: ``` proxy_read_timeout 300; ``` 此示例中的 `proxy_read_timeout` 设置了代理服务器(如果使用了反向代理)的读取超时时间。 3. 保存并重新加载或重启 Nginx 服务器,使配置生效。 这样,Nginx 就会在客户端请求后保持连接打开一段时间,以便处理连续的请求,从而提高性能和响应速度。请根据实际需求调整长连接的超时时间和其他相关配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值