原文:http://zhangxugg-163-com.iteye.com/blog/1551269
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 。
----------------------------------------------------------------------------------------------------------
http {
keepalive_timeout 65; --长连接timeout
keepalive_requests 1024; --每个连接最大请求数,达到这个数,长连接关闭,默认是100,做压力测试可以把这个数调大
}
nginx配置长连接
http://www.cnblogs.com/linn/p/4738820.html
ngx_http_upstream_module
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
ngx_http_proxy_module
相关推荐
本资源包“nginx+lua+redis集群 连接插件和脚本”正是为了解决这三者之间的协同工作,特别是针对原插件没有密码功能的问题进行了改进,使得安全性得到了提升。 首先,Nginx是一款轻量级的Web服务器/反向代理服务器...
1. 消息推送:即时通讯的关键在于消息的实时推送,通过长连接(如WebSocket)保持客户端和服务端的持续通信,一旦有新消息,服务端可以立即推送到客户端。 2. 消息同步:为了保证多设备间的同步,需要在用户登录时...
通过dockerfile将nginx、前端和后端封装成一个镜像文章所需要的nginx压缩包
1.实现断点续传,已上传过的块,前端直接过滤掉,无需继续传到后端,加速上传效率,减少带宽 2.实现快速上传,即之前上传过,该文件已经存在的,很快就能上传成功,其原理就是文件md5+文件sha1的判断
在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构充分利用了每个组件的优势,以实现高效的数据处理、动态内容渲染和负载均衡。以下是对这套技术栈的详细解释: 1. **...
Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑
Nginx:Nginx与后端语言(PHP,Python)的集成.docx
后端文件包+nginx文件+配置文件
默认情况下,Nginx 在处理每个请求后会关闭与后端服务器的连接,但启用 Keepalive 模块后,可以保持这些连接处于打开状态,以便后续请求能重用同一连接,减少握手开销,提高整体性能。这对于高流量网站来说尤其重要...
### Nginx安装与后端健康检查模块配置详解 #### 一、Nginx环境搭建与核心组件安装 **1.1 基础环境准备** - **操作系统**: CentOS 6.5 - **基本服务器配置**: 在安装过程中选择了“基本服务器”配置。 **1.2 安装...
自己手动搭建的nginx+springboot+zookeeper+dubbo+mybatis+dubboadmin,nginx做前后端分离,负载均衡,springboot+zookeeper+dubbo做后端接口,mybatis为数据库持久化层,dubboadmin做监控中心,解压直接用idea导入...
这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...
### Nginx+KeepAlived+Tomcat负载架构详解 #### 一、概述 随着互联网应用的日益增多,单一服务器已经难以满足高并发、高可用性的需求。因此,越来越多的企业开始采用集群技术来提高系统的稳定性和扩展性。本文将...
此外,为了提高用户体验,后端可能还需要实现一些优化策略,如缓存机制(如Redis)来减少数据库访问压力,或者使用负载均衡技术(如Nginx)来分发用户请求,提高系统的可扩展性和可用性。 总结来说,这个项目是一个...
微信小程序是一种轻量级的应用开发平台,主要用于在微信内部运行,提供给用户便捷的服务体验,无需下载安装即可使用。...通过分析和研究,不仅可以提升微信小程序开发技能,还能加深对SSM框架和后台服务设计的理解。
该压缩包“作品集展示微信小程序+ssm后端源码案例设计.zip”包含了一整套的毕业设计项目,主要用于展示微信小程序与SSM(Spring、SpringMVC、MyBatis)后端架构的整合应用。这个项目可以作为学生期末大作业的一个...
该压缩包文件“校园服务平台微信小程序+ssm后端源码案例设计.zip”是一个完整的毕业设计项目,旨在提供一个实际的校园服务应用平台。这个项目包括微信小程序前端和SSM(Spring、SpringMVC、MyBatis)后端架构的源...
在部署和运行项目时,需要一个服务器环境,比如Tomcat或者Nginx,并配置合适的运行环境,包括Java版本、数据库连接、服务器端口等。对于微信小程序,还需要在微信开发者平台上进行小程序的注册和提交审核。 最后,...
对于客户端到Nginx的长连接,Nginx默认已经启用了对客户端连接的Keep-Alive支持。不过,有时我们需要根据具体需求调整Nginx的配置参数。`keepalive_timeout`指定了客户端连接的超时时间,设置为0则禁用长连接。`...
阿里云k8s 部署vue2+nginx+springboot2.5+nacos2.0.3