nginx和php-fpm保持長連線
個人學習筆記,謝絕轉載!!!
原文:https://www.cnblogs.com/wshenjin/p/15724987.html
upstream phpfpm { server 127.0.0.1:9001; keepalive 10; } server{ keepalive_requests 4096; location ~ .*\.php$ { include fcgi.conf; fastcgi_pass phpfpm; fastcgi_index index.php; expires off; fastcgi_keep_conn on; } }
1、upstream中的keepalive設定:
此處keepalive的含義不是開啟、關閉長連線的開關;也不是用來設定超時的timeout;更不是設定長連線池最大連線數。官方解釋:
-
The connections parameter sets the maximum number of idle keepalive connections to upstream servers connections(設定到upstream伺服器的空閒keepalive連線的最大數量)
-
When this number is exceeded, the least recently used connections are closed. (當這個數量被突破時,最近使用最少的連線將被關閉)
-
It should be particularly noted that the keepalive directive does not limit the total number of connections to upstream servers that an nginx worker process can open.(特別提醒:keepalive指令不會限制一個nginx worker程序到upstream伺服器連線的總數量)
2、keepalive_requests 指令用於設定一個keep-alive連線上可以服務的請求的最大數量。當最大請求數量達到時,連線被關閉。預設是100。
這個引數的真實含義,是指一個keep alive建立之後,nginx就會為這個連線設定一個計數器,記錄這個keepalive的長連線上已經接收並處理的客戶端請求的數量。如果達到這個引數設定的最大值時,則nginx會強行關閉這個長連線,逼迫客戶端不得不重新建立新的長連線。
這裡設定和php-fpm的pm.max_request一樣