通过 Unix 套接字和 TCP/IP 套接字运行 PHP-FPM 有啥区别?

Posted

技术标签:

【中文标题】通过 Unix 套接字和 TCP/IP 套接字运行 PHP-FPM 有啥区别?【英文标题】:What are the differences from running PHP-FPM over an Unix Socket vs a TCP/IP Socket?通过 Unix 套接字和 TCP/IP 套接字运行 PHP-FPM 有什么区别? 【发布时间】:2017-07-30 23:51:39 【问题描述】:

有这两种运行 php-FPM 的方法。我知道在技术领域没有什么是万无一失的,但是这两种方法的优缺点是什么?

【问题讨论】:

这很好地描述了它。 serverfault.com/questions/124517/… 【参考方案1】:

不同之处主要在于使用完整的网络堆栈来“打包”和“解包”每条数据所增加的开销。 请注意,大多数部署的开销可以忽略不计

当前端(例如 nginx)和 php-fpm 在同一个盒子中并且

    您可以选择同时水平扩展前端和后端(例如,您正在构建一个同时使用两者的容器,您可以创建更多容器,每个容器都有一个工作对)或 您唯一的选择是垂直缩放您正在使用的一个“盒子”(例如,您添加更多 CPU、RAM 等)

如果您想解耦前端和后端,例如,如果您决定通过扩展您的环境单个 Nginx 接收连接并通过网络将工作传递到 php-fpm 盒子集群

每个环境都不同,因此,与往常一样,唯一真正的选择是从一个看起来正确的设置开始,进行负载测试,并不断测量性能,以便您可以随着负载需求的变化尝试不同的选项(通常,您选择实施成本更低或更易于维护的方法,因为两者都是经过实战考验的可靠方法)

【讨论】:

以上是关于通过 Unix 套接字和 TCP/IP 套接字运行 PHP-FPM 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

socket

TCP与UDP的区别

连接mysql的各种方式

Java 网络编程 使用TCP/IP的套接字(Socket)进行通信

Unix域套接字简介

基于tcp的socket通信