nginx与php-fpm通信

nginx和php-fpm通信有tcp socket和unix socket两种方式。

unix socket方式
优点:
unix socket要比tcp快,且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。

缺点:
unix socket相比不是那么稳定,当并发连接数爆发时,会产生大量的长时缓存,在没有面向连接协议支撑的情况下,大数据包很有可能就直接出错并不会返回异常。

虽然socket有更少的数据拷贝和上下文切换,更少的资源占用,但是如果数据都是错的,那还有什么用呢。另外使用unix socket的话,必须nginx和fpm在同一台机器上

tcp socket方式
优点:
从稳妥的考虑肯定是使用tcp,tcp协议能保证数据的正确性,unix socket不能保证。可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式。

缺点:
性能不如unix socket

配置信息

#tcp socket方式

location  / { 
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    include        fastcgi_params;
}   
#unix socket方式

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
}

参考文档
https://www.cnblogs.com/luoahong/articles/9139888.html

你可能感兴趣的:(PHP,服务器,linux,服务器配置,nginx,PHP技术分享)