1. 程式人生 > >nginx配置與優化

nginx配置與優化

    回憶了下以前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 限制值.