`

nginx 长连接

 
阅读更多

出处:
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 。  


分享到:
评论

相关推荐

    [线上问题] “服务端长连接与客户端短连接引起Nginx产生大量\"TIME_WAIT\"状态的线程”的问题分析解决

    本文讨论了在线上环境中,服务端长连接和客户端短连接配置不当导致Nginx服务器产生大量“TIME_WAIT”状态线程的问题,同时提供了问题的分析和解决方法。本文主要涉及的网络编程知识点包括长连接与短连接的定义和区别...

    Nginx反向代理实现支持长连接详解

    Nginx与前端的连接默认为长连接,一个用户跟Nginx建立连接之后,通过这个长连接发送多个请求。如果Nginx只是作为reverse proxy的话,可能一个用户连接就需要多个向后端的短连接。如果后端的服务器(源站或是缓存...

    [线上问题] Nginx与Tomcat、Client之间请求的长连接配置不一致问题分析解决

    从提供的文件信息中,我们可以提取出有关于Nginx与Tomcat以及客户端之间请求的长连接配置不一致问题的分析解决知识点。同时,文件中提到了Linux系统中netstat命令的用法,我们可以从这部分内容中提取出与网络连接...

    nginx优化之request_time 和upstream_response_time差别1

    另一方面,`upstream_response_time` 是用来跟踪从Nginx与上游服务器建立连接到接收完整响应并关闭连接的时间。这个时间仅包括了Nginx与后端服务器之间的交互,不包含客户端的网络延迟和Nginx自身的处理时间。格式...

    Nginx+Tomcat9搭建负载均衡实例,解压即可运行

    Nginx支持多种负载均衡策略,如轮询(round-robin)、最少连接(least connections)、IP哈希(ip_hash)等。可以根据实际需求选择合适的策略,通过修改`upstream`块中的配置实现。 8. **测试和监控** 完成配置后...

    nginx 限制ip、并发量、连接数等配置

    以上就是Nginx限制IP、控制并发连接数和设置连接数上限的基本方法。在实际应用中,可能还需要根据服务器的性能、网络环境和业务需求进行更精细的调整。Nginx的强大之处在于其模块化设计和高度可配置性,可以根据需要...

    nginx for windows

    此版本nginx可以解决在windows平台上1024句柄的限制:maximum number of descriptors supported by select() is 1024 while connecting to upstream

    nginx 异常长连接快速断开-附件资源

    nginx 异常长连接快速断开-附件资源

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

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

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

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

    nginx 负载均衡for windows, 跨越 100万TCP连接

    标题提及的“nginx 负载均衡for windows, 跨越 100万TCP连接”揭示了Nginx在Windows环境下处理海量并发连接的能力。** 在Windows系统上部署Nginx,可以利用其卓越的反向代理和负载均衡功能,将来自客户端的请求...

    nginx1.18 nginx1.18 nginx1.18

    1. **事件驱动架构**:Nginx 使用异步、非阻塞的事件模型,能够同时处理大量的并发连接,这使得它在处理高流量网站时表现出色。 2. **反向代理**:Nginx 可以作为反向代理服务器,将客户端请求转发到后端应用服务器...

    详解Nginx服务器中配置超时时间的方法

    1. **fastcgi_connect_timeout**: 这个参数用于设置Nginx与FastCGI进程建立连接的超时时间。如果在此时间内无法建立连接,Nginx会返回502 Bad Gateway错误。默认值通常是75秒,但你可以根据实际需求调整。 2. **...

    Nginx Keepalive连接全指南:优化你的网络性能

    - **低内存消耗**:Nginx以低内存占用支持大量并发连接,例如,10000个非活跃的HTTP Keep-Alive连接仅消耗2.5MB的内存。 - **支持大量并发连接**:单机支持10万以上的并发连接,理论上并发连接上限取决于内存。

    Nginx代理SFTP和TCP协议通讯测试.docx

    在测试中,使用 SFTP 客户端连接到 Nginx 代理服务器,Nginx 将连接请求转发到 SFTP 服务器。通过 SFTP 客户端可以访问 SFTP 服务器上的文件和目录。 例如,在本文档中,使用 SFTP 客户端连接到 10.0.85.137:22 ...

    nginx替代方案,nginx代替apache与jboss

    - **高并发连接能力**:Nginx 官方测试表明,它可以支撑高达 5 万个并发连接。在实际生产环境中,Nginx 可以轻松处理 2~3 万个并发连接。 - **低内存消耗**:在 3 万个并发连接下,10 个 Nginx 进程仅消耗约 150MB ...

Global site tag (gtag.js) - Google Analytics