ngin設定檔如下:
user nobody nobody;
worker_processes 4; //Nginx要開啟的進程數
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile 65535; //用於綁定worker進程和CPU, Linux核心2.4以上可用
events{
use epoll; worker_connections 65536; //用於定義Nginx每個進程的最大串連數 }
php-fpm 設定檔如下:
5 //max_children用於設定FastCGI的進程數,根據官方建議,小於2GB記憶體伺服器,可以只開啟64個進程,4GB以上可以開啟200個進程。
1024 //rlimit_files用於設定PHP-FPM對開啟檔案描述符的限制,預設值為1024。
500 //標籤max_requests指明了每個children最多處理多少個請求後便會被關閉,預設的設定是500。
問:
1、nginx 設定檔中worker_processes和php-fpm中max_children的關係?
2、nginx設定檔中 worker_connections 和php-fpm中rlimit_files、max_requests 的關係?
回複內容:
ngin設定檔如下:
user nobody nobody;
worker_processes 4; //Nginx要開啟的進程數
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile 65535; //用於綁定worker進程和CPU, Linux核心2.4以上可用
events{
use epoll; worker_connections 65536; //用於定義Nginx每個進程的最大串連數 }
php-fpm 設定檔如下:
5 //max_children用於設定FastCGI的進程數,根據官方建議,小於2GB記憶體伺服器,可以只開啟64個進程,4GB以上可以開啟200個進程。
1024 //rlimit_files用於設定PHP-FPM對開啟檔案描述符的限制,預設值為1024。
500 //標籤max_requests指明了每個children最多處理多少個請求後便會被關閉,預設的設定是500。
問:
1、nginx 設定檔中worker_processes和php-fpm中max_children的關係?
2、nginx設定檔中 worker_connections 和php-fpm中rlimit_files、max_requests 的關係?
一點關係都沒有。ngnix作為前台代理,其基本不對請求進行處理,而是把請求交給php-fpm來處理。也就是說,ngnix基本不存在讀寫檔案、資料庫、資源等的IO密集操作,更多的是路由、Rewrite等的CPU密集操作,這時候我們更推薦將ngnix的並發進程數設定得和CPU核心數一致。而php-fpm是實際處理請求的程式,在處理過程中,IO操作較多,為了保證並發,我們會根據實際的物理效能,儘可能多的設定並發進程數。另外,nginx不是直接與每個php-fpm處理進程進行串連的,而是通過一個php-fpm的總控進程進行中轉的,所以兩者之間所配置的進程相關參數基本不存在聯絡。不過伺服器整體效能是有短板效應的,效能會以兩者之間較差的為限制,所以兩者都配置得當才能從整體體現出效果。