更新nginx版本upstream升级http1.1解决多TIME_WAIT问题

标签: 更新 nginx 版本 | 发表时间:2014-02-26 02:27 | 作者:
出处:http://2014.54chen.com/

以下内容由 [五四陈科学院]提供

前情提要

在使用java web container的时候,我们都在前面挡一层nginx,方便使用各种nginx的功能,设置成代理。 访问特别多的时候发现,服务器上存在大量的TIME_WAIT状态的连接。 经分析,可能是nginx早期版本的upstream还是使用的1.0的短连接代理,java container老是以1.0的方式主动断开进入TIME_WAIT状态,浪费了大量的连接。

升级前

1
2
3
4
5
6
      ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
TIME_WAIT 4554
CLOSE_WAIT 1
SYN_SENT 2
ESTABLISHED 1043
SYN_RECV 1

为了hold这些time_wait状态的连接,可以想象浪费了多少资源。

升级

下载最新稳定版本nginx-1.4.5,编译安装,按下不表。

修改配置添加keepalive字段到upstream。

1
2
3
4
5
      upstream backend_abc {
    server   192.168.1.34:8086 weight=1 max_fails=2 fail_timeout=10s;
    server   192.168.1.77:8086 weight=1 max_fails=2 fail_timeout=10s;
    keepalive 16;
}

同时修改配置添加http1.1声明和header中connection重写。

1
2
3
4
5
6
7
8
9
10
11
12
      server {
        listen       80;
        ....
  location / {
            proxy_pass         http://backend_abc;
            proxy_http_version 1.1;
            proxy_redirect     off;
            proxy_set_header Connection "";
            ....
  }

    }

升级后

TIME_WAIT大量减少十倍以上! 内存占用降低有待考验。


想快点找到作者也可以到Twitter上留言: @54chen
或者你懒得带梯子上墙,请到新浪微博: @54chen

相关 [更新 nginx 版本] 推荐:

更新nginx版本upstream升级http1.1解决多TIME_WAIT问题

- - 五四陈科学院
以下内容由 [五四陈科学院]提供. 在使用java web container的时候,我们都在前面挡一层nginx,方便使用各种nginx的功能,设置成代理. 访问特别多的时候发现,服务器上存在大量的TIME_WAIT状态的连接. 经分析,可能是nginx早期版本的upstream还是使用的1.0的短连接代理,java container老是以1.0的方式主动断开进入TIME_WAIT状态,浪费了大量的连接.

反向代理服务器Nginx获得300万美元投资,将推出商业版本

- 幻幽 or A書 - 36氪
Nginx是10年前俄国工程师Igor Sysoev为俄国访问量第二大的网站Rambler.ru开发的高性能HTTP和反向代理服务器软件,今天他们宣布获得了来自包括Dell公司CEO Michael Dll私人投资公司等的300万美元投资. Nginx联合创始人Andrew Alexeev表示,通过这次融资,年底前他们将在旧金山开设办事处,并且在2012年会推出一个商业版本.

nginx配置ssl

- - 邢红瑞的blog
先生成网关证书 ,仿照CA模式.

Nginx安装

- - 企业架构 - ITeye博客
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好. ububtu平台编译环境可以使用以下指令. centos平台编译环境使用如下指令. 一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩.

Nginx GZip 压缩

- - 开心平淡对待每一天。热爱生活
  Nginx GZip 模块文档详见: http://wiki.nginx.org/HttpGzipModule 常用配置片段如下:. # 压缩比例,比例越大,压缩时间越长. 默认是1 gzip_types. text/css text/javascript; # 哪些文件可以被压缩 gzip_disable.

Nginx 限流

- - 鸟窝
电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单、信誉分析,进而根据用户ip信誉权重做相应的流量拦截、限制流量. Nginx自身有的请求限制模块 ngx_http_limit_req_module、流量限制模块 ngx_stream_limit_conn_module基于令牌桶算法,可以方便的控制令牌速率,自定义调节限流,实现基本的限流控制.

NGINX的流媒体插件 nginx-rtmp-module

- - 开源软件 - ITeye博客
战斗民族俄罗斯人民开发的一款NGINX的流媒体插件,除了直播发布音视频流之外具备流媒体服务器的常见功能. 基于HTTP的FLV/MP4 VOD点播. HLS (HTTP Live Streaming) M3U8的支持. 基于http的操作(发布、播放、录制). 可以很好的协同现有的流媒体服务器以及播放器一起工作.

Nginx content cache Nginx内容缓存

- - CSDN博客推荐文章
原文地址: http://nginx.com/resources/admin-guide/caching/. When caching is enabled NGINX saves responses in the cache on the disk and uses them to respond to clients without proxying the requests..

nginx + memcached session 同步

- - 企业架构 - ITeye博客
squid 缓存疑问 问题归纳:. 1 squid 缓存的数据,何时过期,如何判断缓存的数据已经过期,如何把最新的数据缓入squid 并且替换掉旧的内容. 2 如何判断数据是否应该被缓存. 3 校验失败时,是否给出缓存中旧的内容. 上面的几个问题  都可以通过 squid中的 refresh_pattern 配置项 找到答案.

nginx日志切割

- - haohtml's blog
nginx的日志文件没有rotate功能. 如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志. 在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件.