nginx和fastcgi的通信方式有兩種,一種是TCP 一種是unix socket
TCP使用的是 127.0.0.1:9000端口,將fastcgi_pass參數修改為127.0.0.1:9000
unix socket 使用套接字 /dev/shm/php-cgi.sock,兩個進程引用同一個socket描述符文件就可以建立通道進行通信了,fastcgi_pass unix:/dev/shm/fpm-cgi.sock;
創建sock文件
sudo touch /dev/shm/fpm-cgi.sock sudo chown www-data:www-data /dev/shm/fpm-cgi.sock sudo chmod 666 /dev/shm/fpm-cgi.sock
原理上來說,unix socket方式肯定要比tcp的方式快而且消耗資源少,因為socket之間在nginx和php-fpm的進程之間通信,而tcp需要經過本地回環驅動,還要申請臨時端口和tcp相關資源,unix socket會顯得不是那么穩定,當並發連接數爆發時,會產生大量的長時緩存,在沒有面向連接協議支撐的情況下,大數據包很有可能就直接出錯並不會返回異常。而TCP這樣的面向連接的協議,多少可以保證通信的正確性和完整性。
