天天看點

高流量站點NGINX與PHP-fpm配置優化

以下正是這方面的一些提示和建議:

1. 将TCP切換為UNIX域套接字

UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的資料拷貝和上下文切換)。

但有一點需要牢記:僅運作在同一台伺服器上的程式可以通路UNIX域套接字(顯然沒有網絡支援)。

2. 調整工作程序數

現代計算機硬體是多處理器的,NGINX可以利用多實體或虛拟處理器。

多數情況下,你的Web伺服器都不會配置為處理多種任務(比如作為Web伺服器提供服務的同時也是一個列印伺服器),你可以配置NGINX使用所有可用的處理器,NGINX工作程序并不是多線程的。

運作以下指令可以獲知你的機器有多少個處理器:

Linux上 -

FreeBSD上 -

将nginx.conf檔案中work_processes的值設定為機器的處理器核數。

同時,增大worker_connections(每個處理器核心可以處理多少個連接配接)的值,以及将"multi_accept"設定為ON,如果你使用的是Linux,則也使用"epoll":

3. 設定upstream負載均衡

以我們的經驗來看,同一台機器上多個upstream後端相比單個upstream後端能夠帶來更高的吞吐量。

例如,如果你想支援最大1000個PHP-fpm子程序(children),可以将該數字平均配置設定到兩個upstream後端,各自處理500個PHP-fpm子程序:

4. 禁用通路日志檔案

這一點影響較大,因為高流量站點上的日志檔案涉及大量必須在所有線程之間同步的IO操作。

若你不能關閉通路日志檔案,至少應該使用緩沖:

5. 啟用GZip

6. 緩存被頻繁通路的檔案相關的資訊

7. 調整用戶端逾時時間

8. 調整輸出緩沖區大小

fastcgi_buffers 256 16k;

fastcgi_buffer_size 128k;

fastcgi_connect_timeout 3s;

fastcgi_send_timeout 120s;

fastcgi_read_timeout 120s;

reset_timedout_connection on;

server_names_hash_bucket_size 100;

9. /etc/sysctl.conf調優

10. 監控

持續監控打開連接配接的數目,空閑記憶體以及等待狀态線程的數目。

設定警報在超出門檻值時通知你。你可以自己建構這些警報,或者使用類似ServerDensity的東西。

确認安裝了NGINX的stub_status子產品。該子產品預設并不會編譯進NGINX,是以可能你需要重新編譯NGINX -

make install BATCH=yes

本文轉自Linux就該這麼學部落格園部落格,原文連結:http://www.cnblogs.com/linuxprobe/p/5343613.html,如需轉載請自行聯系原作者