php fpm 和 nginx 的兩種通訊方式

2022-02-19 14:46:13 字數 1715 閱讀 3949

在 linux 中,nginx 伺服器和 php-fpm 可以通過 tcp socket 和 unix socket 兩種方式實現。 

一下內容**:

tcp socket

允許通過網路程序之間的通訊,也可以通過loopback進行本地程序之間通訊。

unix socket

允許在本地執行的程序之間進行通訊。

對比分析:

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

如何選擇

如果是在同一臺伺服器上執行的 nginx 和 php-fpm,併發量不超過1000,選擇 unix socket,因為是本地,可以避免一些檢查操作(路由等),因此更快,更輕。 如果面臨高併發業務,選擇使用更可靠的 tcp socket,以負載均衡、核心優化等運維手段維持效率。 

nginx 和 php-fpm 使用 unix socket

將sock檔案放在/dev/shm目錄下,使用的記憶體讀寫更快。

1 # cd /dev/shm

2touch php7.0-fpm.sock

3chown www-data:www-data php7.0-fpm.sock

4chmod

777 php7.0-fpm.sock

php-fpm.conf

1 # vi /etc/php/7.0/fpm/pool.d/www.conf

2 listen= /dev/shm/php7.0-fpm.sock

3 listen.owner = www-data

4 listen.group = www-data

nginx location 配置

1   location ~*\.php$
提高nginx和php-fpm使用的 unix socket穩定性(單機能力有限)1.修改核心引數

1 net.unix.max_dgram_qlen = 4096

2 net.core.netdev_max_backlog = 4096

3 net.core.somaxconn = 4096

2.提高 backlog

backlog 預設位128,1024這個值最好換算成自己正常的qps。

1

nginx.conf

2server

56 php-fpm.conf

7 listen.backlog = 1024

89 ---------------------

3.增加 sock 檔案和 php-fpm 例項

在 /dev/shm 新建乙個 sock 檔案,在 nginx 中通過 upstream 魔抗將請求負載均衡到兩個 sock 檔案, 並且將兩個 sock 檔案分別對應到兩套 php-fpm 例項上。

nginx的兩種安裝方式

安裝nginx 安裝nginx主要有兩種方式,一種是yum安裝,一種是原始碼包安裝 yum安裝 root node1 wget o etc yum.repos.d epel.repo 2.安裝nginx root node1 yum install nginx y root node1 nginx ...

nginx和php fpm的配置

一 nginx 配置檔案 nginx.conf 原則 woker程序數與cpu核數一致。master程序用以管理woker程序,高併發可以考慮woker程序設定提高為cpu核數 2 引數 worker processes 1 原因 nginx作為 是提交請求給php fpm的,並沒有涉及到io 即讀...

Nginx 中的兩種限流方式

nginx 提供兩種限流方式,一是控制速率,二是控制併發連線數。下面例子使用 nginx limit req zone 和 limit req 兩個指令,限制單個ip的請求處理速率。在 nginx.conf http 中新增限流配置 http配置server,使用limit req指令應用限流。se...