`
happyqing
  • 浏览: 3204945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx1.1.4+ 对后端机器的长连接特性

阅读更多

 

原文: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

http://nginx.org/r/proxy_pass

 

 

 

分享到:
评论

相关推荐

    nginx+lua+redis 集群 连接插件和脚本

    本资源包“nginx+lua+redis集群 连接插件和脚本”正是为了解决这三者之间的协同工作,特别是针对原插件没有密码功能的问题进行了改进,使得安全性得到了提升。 首先,Nginx是一款轻量级的Web服务器/反向代理服务器...

    考拉开源仿微信uniapp前端+JAVA后端IM即时通讯

    1. 消息推送:即时通讯的关键在于消息的实时推送,通过长连接(如WebSocket)保持客户端和服务端的持续通信,一旦有新消息,服务端可以立即推送到客户端。 2. 消息同步:为了保证多设备间的同步,需要在用户登录时...

    通过dockerfile将nginx、前端和后端封装成一个镜像文章所需要的nginx压缩包

    通过dockerfile将nginx、前端和后端封装成一个镜像文章所需要的nginx压缩包

    前端Javascript+Html5+后端PHP分块上传文件

    1.实现断点续传,已上传过的块,前端直接过滤掉,无需继续传到后端,加速上传效率,减少带宽 2.实现快速上传,即之前上传过,该文件已经存在的,很快就能上传成功,其原理就是文件md5+文件sha1的判断

    Nginx+tomcat+redis

    在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构充分利用了每个组件的优势,以实现高效的数据处理、动态内容渲染和负载均衡。以下是对这套技术栈的详细解释: 1. **...

    Nginx+Uwsgi+Django+Vue部署

    Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑

    Nginx:Nginx与后端语言(PHP,Python)的集成.docx

    Nginx:Nginx与后端语言(PHP,Python)的集成.docx

    后端文件包+nginx文件+配置文件

    后端文件包+nginx文件+配置文件

    nginx1.9.7+keepalive1.3.2

    默认情况下,Nginx 在处理每个请求后会关闭与后端服务器的连接,但启用 Keepalive 模块后,可以保持这些连接处于打开状态,以便后续请求能重用同一连接,减少握手开销,提高整体性能。这对于高流量网站来说尤其重要...

    Nginx安装+nginx_upstream_check_module后端健康检查

    ### Nginx安装与后端健康检查模块配置详解 #### 一、Nginx环境搭建与核心组件安装 **1.1 基础环境准备** - **操作系统**: CentOS 6.5 - **基本服务器配置**: 在安装过程中选择了“基本服务器”配置。 **1.2 安装...

    nginx+springboot+zookeeper+dubbo+mybatis+dubboadmin一步到位

    自己手动搭建的nginx+springboot+zookeeper+dubbo+mybatis+dubboadmin,nginx做前后端分离,负载均衡,springboot+zookeeper+dubbo做后端接口,mybatis为数据库持久化层,dubboadmin做监控中心,解压直接用idea导入...

    nginx+tomcat+redis完成session共享

    这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...

    Nginx+KeepAlived+Tomcat负载架构

    ### Nginx+KeepAlived+Tomcat负载架构详解 #### 一、概述 随着互联网应用的日益增多,单一服务器已经难以满足高并发、高可用性的需求。因此,越来越多的企业开始采用集群技术来提高系统的稳定性和扩展性。本文将...

    基于微信小程序的书橱+ssm后端源码案例设计.zip

    此外,为了提高用户体验,后端可能还需要实现一些优化策略,如缓存机制(如Redis)来减少数据库访问压力,或者使用负载均衡技术(如Nginx)来分发用户请求,提高系统的可扩展性和可用性。 总结来说,这个项目是一个...

    微信小程序外卖订餐设计+ssm后端源码案例设计.zip

    微信小程序是一种轻量级的应用开发平台,主要用于在微信内部运行,提供给用户便捷的服务体验,无需下载安装即可使用。...通过分析和研究,不仅可以提升微信小程序开发技能,还能加深对SSM框架和后台服务设计的理解。

    作品集展示微信小程序+ssm后端源码案例设计.zip

    该压缩包“作品集展示微信小程序+ssm后端源码案例设计.zip”包含了一整套的毕业设计项目,主要用于展示微信小程序与SSM(Spring、SpringMVC、MyBatis)后端架构的整合应用。这个项目可以作为学生期末大作业的一个...

    校园服务平台微信小程序+ssm后端源码案例设计.zip

    该压缩包文件“校园服务平台微信小程序+ssm后端源码案例设计.zip”是一个完整的毕业设计项目,旨在提供一个实际的校园服务应用平台。这个项目包括微信小程序前端和SSM(Spring、SpringMVC、MyBatis)后端架构的源...

    小说实体书商城微信小程序+ssm后端源码案例设计带文档说明.zip

    在部署和运行项目时,需要一个服务器环境,比如Tomcat或者Nginx,并配置合适的运行环境,包括Java版本、数据库连接、服务器端口等。对于微信小程序,还需要在微信开发者平台上进行小程序的注册和提交审核。 最后,...

    nginx反向代理时如何保持长连接

    对于客户端到Nginx的长连接,Nginx默认已经启用了对客户端连接的Keep-Alive支持。不过,有时我们需要根据具体需求调整Nginx的配置参数。`keepalive_timeout`指定了客户端连接的超时时间,设置为0则禁用长连接。`...

    阿里云k8s 部署vue2+nginx+springboot2.5+nacos2.0.3

    阿里云k8s 部署vue2+nginx+springboot2.5+nacos2.0.3

Global site tag (gtag.js) - Google Analytics