Nginx的upstream连接池

一般常见的PHP架构是nginx+php-fpm,而这种架构影响性能的主要原因如下(引用worker的):

  1. 有一层nginx开销
  2. 有一层nginx到php-fpm的开销
  3. nginx到php-fpm默认是短连接,频繁建立连接又断开的开销
  4. 最致命的是php-fpm每次请求开始初始化一切又销毁一切的开销

那么能不能在不修改架构的情况下而优化呢?答案当然是可以的,我们可以优化第三点,将短连接修改为长连接,关键配置如下:

upstream fastcgi_backend {
    server 127.0.0.1:9000;
    keepalive 8;#保持长连接的个数
}

server {
    ...

    location /fastcgi/ {
        fastcgi_pass fastcgi_backend;
        fastcgi_keep_conn on;#开启长连接
        ...
    }
}

同理,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到upstream就可以利用长连接了.如果是新项目的话,建议大家用Workerman,性能真的是杠杠的。不要想当然的认为那个性能好,那个牛,最好自己做个性能测试来对比下。建议大家用ab来测试下Workerman,swoole,nodejs,golang,nginx做web服务的时候差距是多少!

此条目发表在 网站架构 分类目录,贴了 标签。将固定链接加入收藏夹。

评论功能已关闭。