IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    设置fastcgi_pass和proxy_pass使用长连接

    夜行人发表于 2015-11-23 08:30:52
    love 0

    默认情况下,无论是fastcgi_pass还是proxy_pass,每个请求都会建立后端服务器建立一个连接,然后关掉,这样带来的问题是

    • 每个连接都需要新建、关闭连接
    • tcp产生大量time_wait

    建立upstream

    这个是fastcgi的例子,如果是http的则把端口改下就可以了

    upstream fastcgi_backend {
        server 127.0.0.1:9000;
        keepalive 60;
    }

    fastcgi_pass

    加入fastcgi_keep_conn on;

    location ~ .*\.php$
    {
        fastcgi_pass fastcgi_backend;
        fastcgi_keep_conn on;
    }

    proxy_pass

    location ~ .*\.php$
    {
        # 清除"Connection"头部
        proxy_set_header   Connection "";
        # 将http版本由1.0修改为1.1
        proxy_http_version 1.1;
        proxy_pass  http://backend.server;
    }

    经过上面的优化,fastcgi和proxy的time_wait都可以由1000+下降到20+

    主要参考

    • 为重负网络优化 Nginx 和 Node.js
    • http 1.0和1.1在网络管理方面的差异


沪ICP备19023445号-2号
友情链接