優化的方向和目標,無外乎:
1.盡量提高單台機器處理效率
2.盡量降低單台機器的負載
3.盡量降低磁碟的i/o
4.盡量降低網路i/o
5.儘量減少記憶體使用
6.盡量高效利用cpu
生產環境下,應該使nginx模組最小化,就是用到哪幾個就開哪幾個,這個需要在編譯安裝nginx的時候做
使用者和組,最好是為nginx建立使用者和組,並單獨設定許可權,這用會更安全
worker_proceses:通常配置成cpu的總核數,或者其2倍,效能會更好,這可以減少程序間切換帶來的消耗
還可以使用woker_cpu_affinity來繫結cpu,使得每個worker程序獨享乙個cpu,實現完全的併發,效能更好,不過這個只對linux系統有效
events裡面的時間模型,linux推薦使用epoll模型,freebsd推薦採用kqueue
worker_rlimit_nofile:描述乙個nginx程序開啟最多的檔案數目。配置成跟linux核心檔案開啟數一致就可以了。可以通過ulimit -n來檢視,新裝的系統預設是1024
worker_connnections:每個程序允許的最多連線數,預設是1024,可以設定大一些。理論上併發總數是worker_processes和worker_connections的乘積,worker_connections值的設定跟物理記憶體大小有關,因為系統可以開啟的最大檔案數和記憶體大小成正比,一般1gb記憶體的機器上可以開啟的檔案數大約是10萬左右,所以,worker_connections的值需要根基worker_processes程序數目和系統可以開啟的最大檔案總數進行適當地進行設定
keepalive_timeout:設定到65左右就可以
client_header_buffer_size:設定請求的快取, 設定為4k,通常為系統分頁大小的整數倍,可以通過getconf pagesize來車看系統分頁大小
對開啟檔案設定快取
盡量開啟gzip壓縮,gzip_comp_level通常設定成3-5,太高會浪費cpu
error日誌優化:執行期間設定為crit,可以減少i/o
access日誌優化:如果使用了其他統計軟體,可以關閉日誌,來減少磁碟寫,或者寫入記憶體檔案,提高i/o效率
client_buffer_size優化:如果buffer_size處理客戶端請求體buffer大小。用來處理post提交資料,上傳檔案等。
client_body_buffer_size需要足夠大以容納需要上傳的post資料。桶裡還有後端的buffer資料。
worker_priority程序優先順序設定:linux系統中,優先順序高的程序會占用更多的系統資源,這裡配置的是程序的靜態優先順序,取值範圍-20到+19,-20級別最高。因此可以把這個值設定小一點,但不建議比核心程序的值低(通常為-5)
負載均衡鎖accept_mutex,建議開啟,預設就是開啟的
如果使用ssl的話,而且伺服器上有ssl硬體加速裝置的話,請開啟硬體加速
架構師日記 Nginx的HTTP模組配置
core module支援一些內建的變數,與apache使用的變數相一致。首先,一些變數代表了客戶端請求頭部的一些字段,如 http user agent,http cookie等等。注意,由於這些變數會在請求中定義,所以可能無法保證他們是存在的或者說可以定義到一些別的地方 例如遵循一定的規範 除此...
架構師細說 NGINX 的配置及優化
最近感覺很多東西在運用到一定的程度之後,會發現原來是自己了解到的不夠。一方面限於實際運用到的不多,一方面可能是因為一開始沒有進行全面認識。遂這裡蒐集整理了一番nginx。centos平台,原始碼安裝的 usr local nginx nginx 啟動 usr local nginx nginx s ...
我的架構師夢想日記
第四天 今天想了想還是把rhce的班報了吧,本來想等ocp考完之後再報的,但是某某培訓機構比較坑,非得過了年才能考,好吧。問吳總能不能公司出錢幫我出點錢讓我考這個證,吳總說公司從來沒有過這個先例,這我在我的預料之中,考ocp的錢都是我自己出的,但是還是有一點點小小的失望。今天去拱墅了,又是一通加班,...