1. 程式人生 > >nginx與php-fpm通訊方式

nginx與php-fpm通訊方式

nginx和php-fpm的通訊方式有兩種,一種是tcp socket的方式,一種是unix socke方式。

tcp socket
tcp socket的優點是可以跨伺服器,當nginx和php-fpm不在同一臺機器上時,只能使用這種方式。


unix socket
Unix domain socket 又叫 IPC(inter-process communication 程序間通訊) socket,用於實現同一主機上的程序間通訊。socket 原本是為網路通訊設計的,但後來在 socket 的框架上發展出一種 IPC 機制,就是 UNIX domain socket。雖然網路 socket 也可用於同一臺主機的程序間通訊(通過 loopback 地址 127.0.0.1),但是 UNIX domain socket 用於 IPC 更有效率:不需要經過網路協議棧,不需要打包拆包、計算校驗和、維護序號和應答等,只是將應用層資料從一個程序拷貝到另一個程序。這是因為,IPC 機制本質上是可靠的通訊,而網路協議是為不可靠的通訊設計的。

 

 

unix socket減少了不必要的tcp開銷,而tcp需要經過loopback,還要申請臨時埠和tcp相關資源。但是,unix socket高併發時候不穩定,連線數爆發時,會產生大量的長時快取,在沒有面向連線協議的支撐下,大資料包可能會直接出錯不返回異常。tcp這樣的面向連線的協議,多少可以保證通訊的正確性和完整性。