一般常见的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服务的时候差距是多少!
