PHP 腳本含 sleep(1) 迴圈,同時開啟多個瀏覽器分頁訪問,後續請求必須等待前一個完成才回應,呈現序列阻塞。
lighttpd + PHP-FPM (FastCGI) 預設 max-procs = 1,僅啟動一個 PHP 進程處理所有請求,導致併發請求排隊。
fastcgi.server = ( ".php" => ((
"host" => "127.0.0.1",
"port" => 9000,
"max-procs" => 10, <-- 關鍵:增加進程數
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "10"
)
)))
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
ps aux | grep php 確認多進程存在。max-procs 不宜過大,建議 3~5 視 RAM 調整。ob_flush()/flush() 輸出,確認 lighttpd 未啟用 server.stream-response-body = 2 導致緩衝。