php-fpm与nginx通讯的两种方式和区别

unix socket方式

优点:
unix socket方式要比tcp的方式快,而且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。
会有很多linux傻瓜面板,他们可能会有很多中 php-fpm的版本,那么如果是不同版本去开不同的端口,然后nginx去配置的话,你要记住很多端口,sock文件便是解决这个问题最简单的方法。
Socket是使用unix domain socket连接套接字/dev/shm/php-cgi.sock(很多教程使用路径/tmp,而路径/dev/shm是个tmpfs,速度比磁盘快得多)

缺点:
unix socket会显得不是那么稳定,当并发连接数爆发时,会产生大量的长时缓存,在没有面向连接协议支撑的情况下,大数据包很有可能就直接出错并不会返回异常。
虽然sock有更少的数据拷贝和上下文切换,更少的资源占用,但是如果数据都是错的,那还有什么用呢。另外使用sock的话,必须nginx和fpm在同一台机器上

tcp方式

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

缺点:
性能不如unix socket