nginx upstream keepalive connections
Nginx从
1.1.4
开始,实现了对后端机器的长连接支持,这是一个激动人心的改进,这意味着
Nginx
与后端机器的通信效率更高,后端机器的负担更低。
例如,对一个没有长连接支持的后端机器,会出现大量TIME_WAIT
状态的连接,使用以下命令验证之:
netstat -n | grep TIME_WAIT
经过查阅官方文档,其目前已经实现了http, fastcgi, memcache
协议的长连接支持。而之前的版本中仅支持
memcache
协议。
1. 启用到
memcache
服务器的长连接
在upstream
配置段中增加
keepalive N
指令即可:
upstream memcached_backend {
server 127.0.0.1:11211;
server 10.0.0.2:11211;
keepalive 32;
}
server {
...
location /memcached/ {
set $memcached_key $uri;
memcached_pass memcached_backend;
}
}
2.
启用fastcgi
长连接支持
除了需要在upstream
中配置
keepalive N
外,还需要在
location
中增加
fastcgi_keep_conn on;
upstream fastcgi_backend {
server 127.0.0.1:9000;
keepalive 8;
}
server {
...
location /fastcgi/ {
fastcgi_pass fastcgi_backend;
fastcgi_keep_conn on;
...
}
}
3.
启用对后端机器HTTP
长连接支持
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
注意:需要设置nginx
代理请求的
http
协议版本号为
1.1,
以及清除掉
Connection
请求
header,
官方文档描述:
For HTTP, the proxy_http_version directive should be set to “
1.1
”
and the
“
Connection
”
header field should be cleared
.
The connections parameter should be set low enough to allow upstream servers to process additional new incoming connections as well.
即是说:keepalive N
指令中
, N
的值应该尽可能设置小一些,以便后端机器可以同时接受新的连接。
在我负责的生产环境中,前端是nginx,
静态文件缓存使用
varnish,
使用长连接之后,
varnish
机器的连接数从
8000
多下降至
200
多,负载值也有明显降低。
但是针对fastcgi,
即后端机器是
php-fpm
服务时,在
nginx
日志中出现以下错误:
upstream sent unsupported FastCGI protocol version: 0 while reading upstream
。
广泛搜集,目前还未解决之。如果您遇到同样的问题并解决之,请一定联系笔者信箱zhangxugg@163.com,
甚是感谢。
分享到:
相关推荐
nginx+lua+redis 集群 连接插件和脚本,原来插件是没有密码功能 故 修改了一下 k可以自己下载使用
通过dockerfile将nginx、前端和后端封装成一个镜像文章所需要的nginx压缩包
Nginx++Keepalived+Tomcat负载 均衡 &动 静 分 离。配置
Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑
Nginx+tomcat+redis软负载均衡需要的一整套资源,还包括了JDK,依赖包等文件
nginx配置+https
自己手动搭建的nginx+springboot+zookeeper+dubbo+mybatis+dubboadmin,nginx做前后端分离,负载均衡,springboot+zookeeper+dubbo做后端接口,mybatis为数据库持久化层,dubboadmin做监控中心,解压直接用idea导入...
centos7.2 Nginx1.12 + PHP7.1 + Mysql5.6 安装教程,希望对大家有用
自己做的一个nginx+tomcat+redis完成session共享小例子,包括所需jar,适合初学者,希望大家一起学习交流
nginx+lua+redis通过匹配客户端ip进行灰度发布
Nginx+KeepAlived+Tomcat负载架构 这个可以实现tomcat集群,并且可以使服务器主备机进行切换。如果其中一台机器当机,会自动切换到另一台机器。客服端感受不到服务器当掉。非常实用。
nginx1.9.7+keepalive1.3.2,可搭建Nginx可高用集群和自动故障转移
详细说明了windows服务器nginx+tomcat+mysql部署及配置(配置阿里云后台安全组,配置域名)很适合新手学习 附件中包含: 1.操作说明文档 2.操作录屏 3.安装所用到的软件安装包 1)Windows Server 2019 数据中心版 ...
Nginx所需环境的安装,及nginx安装,nginx相关功能开启,后端节点健康检查插件安装,静态资源缓存插件,缩略图插件安装等。
RabbitMQ+Zookeeper+Dubbo+Nginx+Mysql+Redis搭建.txtRabbitMQ+Zookeeper+Dubbo+Nginx+Mysql+Redis搭建.txtRabbitMQ+Zookeeper+Dubbo+Nginx+Mysql+Redis搭建.txt
nginx安装包+php安装包+补丁+代码
keepalived+nginx+tomcat+redis+mysql所需的jdk包,之前csdn不让上传超过200m得只能分开上传。
nginx配置访问后端源码
Nginx+keepalived+tomcat实现性负载均衡
Nginx与前端的连接默认为长连接,一个用户跟Nginx建立连接之后,通过这个长连接发送多个请求。如果Nginx只是作为reverse proxy的话,可能一个用户连接就需要多个向后端的短连接。如果后端的服务器(源站或是缓存...