nginx配置與優化
阿新 • • 發佈:2018-12-16
回憶了下以前nginx筆記,下面放上來一步步說,這裡主要為nginx伺服器軟體方面.
1.先上一些常用配置與說
# nginx程序數,建議按照cpu數目來指定,如,雙核四執行緒[邏輯4核],那麼設定數建議為4*2 = 8 --worker_processes 8; # 為每個程序分配cpu,將8個程序分配到8個cpu,可以寫多個,或者將一個程序分配到多個cpu --worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; # 這個指令是指當一個nginx程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(ulimit -n)與nginx程序數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n的值保持一致 ps : ulimit -n 65535(linux最大值) sysctl -a | grep fs.file --worker_rlimit_nofile 65535; # Epoll: 使用於Linux核心2.6版本及以後的系統 --use epoll; # 每個程序允許的最多連線數,理論上每臺nginx伺服器的最大連線數為 worker_processes*worker_connections --worker_connections 65535; # keepalive 超時時間 --keepalive_timeout 60; # 客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小 也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設定為“系統分頁大小”的整倍數 ps : getconf PAGESIZE 可以檢視分頁大小 --client_header_buffer_size 4k; # 將為開啟檔案指定快取,預設沒啟用,max指定快取數量,建議和開啟檔案數一致,inactive是指經過多長時間檔案沒被請求後刪除快取 --open_file_cache max=65535 inactive=60s; # 指多長時間檢查一次快取的有效資訊 --open_file_cache_valid 80s; # open_file_cache 指令中的inactive 引數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一直是在快取中開啟的,如上例,如果有一個檔案在inactive 時間內一次沒被使用,它將被移除 --open_file_cache_min_uses 1; # 這部分可以優化一些頁面資訊壓縮 --gzip on --gzip_min_length 1k; --gzip_buffers 4 16k; --gzip_http_version 1.0; --gzip_comp_level 2; --gzip_types text/plain application/x-javascript text/css application/xml; --gzip_vary on;
有兩個場景化的配置
1.tcp_nodelay on | off;
預設值:
tcp_nodelay on;
上下文: http, server, location
開啟或關閉nginx使用TCP_NODELAY選項的功能.這個選項僅在將連線轉變為長連線的時候才被啟用.(譯者注,在upstream傳送響應到客戶端時也會啟用),可以和keepalive使用.
2.tcp_nopush on | off;
預設值:
tcp_nopush off;
上下文: http,server,location
選項僅在使用sendfile的時候才開啟.
2.簡要ulimit有關優化除錯[高併發下這個引數必須調,所以著重備註下]
linux 預設值 open files 和 max user processes 為 1024
#ulimit -n
1024
#ulimit –u
1024
ulimit -a 可以檢視當前系統的所有限制值.使用ulimit -n 可以檢視當前的最大開啟檔案數.
新裝的linux 預設只有1024,當作負載較大的伺服器時,很容易遇到error: too many open files .因此,需要將其改大.
使用 ulimit –n 65535 可即時修改,但重啟後就無效了.(注ulimit -SHn 65535 等效 ulimit -n 65535 ,-S 指soft ,-H 指hard)
修改方式有幾種:
1).在/etc/rc.local 中增加一行 ulimit -SHn 65535 ,這裡主要是作業系統每次啟動會執行的指令碼.
注意:CentOS 中使用無效果(需要自己測試,可能和系統版本與核心有關)
2).在/etc/profile 中增加一行 ulimit -SHn 65535
備註:ulimit 命令本身就有分軟硬設定,加-H 就是硬,加-S 就是軟預設顯示的是軟限制
soft 限制指的是當前系統生效的設定值.hard 限制值可以被普通使用者降低.但是不能增加. soft 限制不能設定的比 hard 限制更高. 只有 root 使用者才能夠增加 hard 限制值.