一般常见的PHP架构是nginx+php-fpm,而这种架构影响性能的主要原因如下(引用worker的):
- 有一层nginx开销
- 有一层nginx到php-fpm的开销
- nginx到php-fpm默认是短连接,频繁建立连接又断开的开销
- 最致命的是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服务的时候差距是多少!