Nginx 作為web server 的優化要點

2022-09-25 01:03:12 字數 1867 閱讀 6115

nginx既可作為web server,也可作為反向proxy,這裡先討論作為web server的一般性優化要點。

常用優化要點

nginx使用的是固定數量的workers, 每個worker都處理進入的請求。最佳實踐是每個cpu核心配置乙個worker.

如何知道您的系統有幾個cpu?

對於乙個四核處理器,配置檔案類似:

# one worker per cpu-core.

這裡我們提高了 worker_connections 設定,定義了每個worker程序能處理多少連線。

伺服器的最大連線數量是:

這裡啟用了 multi_accept,該配置項使nginx能盡快接收盡可能多的請求,減少客戶端的連線初始化時間。

最後,本例中使用了 epoll 的事件模型,這也是最佳實踐建議。

壓縮很多使用者會啟用 gzip壓縮模組,使得返回客戶端的內容更簡短,傳輸更快。

但是壓縮會消耗使用者伺服器資源,通過監控cpu使用率(可採用開源hyperic),如果過高,可以考慮禁用壓縮。

通常只壓縮大檔案,避免壓縮那些壓縮效果不好的檔案,例如,可執行檔案等二進位制檔案。

使用者可參考下面配置:

上面配置,只對檔案大於10k的文字檔案進行壓縮。

客戶端快取

如果客戶端(一般是瀏覽器)認為已經儲存了要**的最新內容,就不會向nginx伺服器再發請求。

這需要做一些快取設定。最簡單的辦法是將所有的,js等靜態內容設定乙個固定的時間長度:

這裡我們也禁用了**檔案的日誌,將一些檔案字尾檔案的過期時間設定為30天。

檔案控制代碼快取

如果需要處理大量靜態檔案,需要保持這些檔案控制代碼為開啟狀態,避免後續再次開啟。

下面示例,既可放在nginx配置的 server 部分,也可放在主 http 塊中。:

這裡設定伺服器最大快取2000個開啟的檔案控制代碼,關閉20秒內無請求的檔案控制代碼,控制代碼的有效時間是60秒,並且只有訪問次數超過5次的才會被快取。這樣只快取頻繁訪問的檔案,降低檔案系統的訪問。

優化php

很多站點使用了php,例如drupal, wordpress。

由於nginx沒有自己的mod_php,推薦的方式是使用 php-fpm,需要將請求**,例如:

注意這裡使用了 unix domain-socket 連線 fpm, 所以需要修改/etc/php5/fpm/pool.d/www.conf 如下:

這保證fpm監聽乙個domain socket,而不是預設的( "listen=127.0.0.1:9000").

預設的php-fpm將啟動一些專用的worker,每個執行乙個php例項。如果記憶體足夠,可以增加worker數量來提公升併發吞吐量。

編輯檔案 /etc/php5/fpm/pool.d/www.conf,改變量量,例如:

該值需要根據實際環境調整。調整的依據是使用監控工具所採集的資料。

最後可配置php-fpm自動重啟。如果出現問題,例如下面的配置是,在1分鐘內十個子程序死掉,就重啟,允許程序有十秒失去控制。

下面是/etc/php5/fpm/php-fpm.conf 中的全域性配置:

檢驗優化配置的效果需要實踐檢驗,建議部署乙個監控工具,監控的內容應包括:

nginx:開源版提供的監控指標,僅有如下6個:

connections,accepts,handled,requests,writing,waiting

從作業系統的角度:應包括nginx程序的cpu使用率,記憶體占用,整體cpu使用率,交換區使用率等指標。

如果是在虛擬機器上執行,還應關注 作業系統的 st( steal time)指標,判斷是否有超賣,過載等現象;

這裡推薦乙個免費開源工具, hyperic

本文標題: nginx 作為web server 的優化要點

本文位址:

Nginx之 Nginx作為TCP負載均衡

這兩天考慮mysql的集群,考慮負載均衡,了解nginx在版本1.9.0以後支援tcp的負載均衡,具體可以參照官網關於模組ngx stream core module的敘述 nginx從1.9.0後引入模組ngx stream core module,模組是沒有編譯的,需要用到編譯需新增 with ...

利用Tomcat建立多個Web Server的方法

以下內容為網上收集後整理而成,如有錯誤或描述不準確的地方或是別的請多指教.當你使用tomcat作為web server的時候,是不是會想過這樣的乙個問題 如何利用tomcat建立多個web應用 呢?要實現這一點是很簡單的,也有多種方法。以下說明使用 tomcat home 代表tomcat安裝目錄 ...

利用Tomcat建立多個Web Server的方法

以下內容為網上收集後整理而成,如有錯誤或描述不準確的地方或是別的請多指教.當你使用tomcat作為web server的時候,是不是會想過這樣的乙個問題 如何利用tomcat建立多個web應用 呢?要實現這一點是很簡單的,也有多種方法。以下說明使用 tomcat home 代表tomcat安裝目錄 ...