1. 簡單說下請求鏈路的處理流程
client IP 訪問www.baidu.com
|
|
lvs 負載均衡 (DR轉發規則)
|
|
Nginx 負載均衡
|
|
路由到www.baidu.com/index.php
|
|
載入nginx的fast-cgi模組
|
|
fast-cgi監聽127.0.0.1:9000地址
|
|
www.baidu.com/index.php請求到達127.0.0.1:9000
|
|
php-fpm 監聽127.0.0.1:9000
|
|
php-fpm 接收到請求,啟用worker程式處理請求
|
|
php-fpm 處理完請求,返回給nginx
|
|
nginx將結果透過http返回給瀏覽器(lvs-DR)
2. 說說nginx 502,503,504的意義和可能原因
502 - Bad Gateway fpm
程式掛掉或者後端程式過長時間未返回。
nginx在這裡充當的是反向代理伺服器的角色,是把http協議請求轉成fastcgi協議的請求,透過fastcgi_pass指令傳遞給php-fpm程式,當php-fpm程式響應的內容是nginx無法理解的響應,就會返回502 bad gateway。
503 - Service Unavailable
伺服器目前無法使用(由於超載或停機維護)。通常,這只是暫時狀態。(服務不可用)。一個http請求佔用一個php-fpm程式,瞬時請求量過大時,沒有足夠的php-fpm程式去處理請求,就會返回503 service unavailable。
或者,nginx配置了頻率限制,而client端又超過了配置的限制後就會收到503的響應。
504 - Gateway Time-out
nginx的fastcgi模組有一個fastcgi_read_timeout配置,它表示從FastCGI server獲取資料的超時時間。如果超過這個配置,客戶端就是收到504的響應。
可以理解為,單個php-fpm程式阻塞超過nginx的時間閾值返回504 gateway timeout。
3. 詳細說下502和504的區別
4. client請求進來,先到lvs層,這個瞭解麼
5. 說說PHP-FPM與Nginx怎麼通訊,處理請求連線的?
本作品採用《CC 協議》,轉載必須註明作者和本文連結