Nginx調優(nginx引數和作業系統級)

2021-10-10 09:55:25 字數 4440 閱讀 2520

作業系統及核心版本

cat /etc/redhat-release 

centos linux release 7.2.1511 (core)

[root@tomcat01 conf]

# uname -a

linux tomcat01 3.10.0-327.el7.x86_64 #1 smp thu nov 19 22:10:57 utc 2015 x86_64 x86_64 x86_64 gnu/linux

1、檢視程序的開啟最大檔案數,預設為1024

[root@localhost ~]

# ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 7168

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 65535

pipe size (512 bytes, -p) 8

posix message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time

(seconds, -t) unlimited

max user processes (-u) 7168

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

可以直接加上 -n引數檢視

ulimit -n
檢視系統最大開啟檔案數

cat /proc/sys/fs/file-max
2、修改方法

臨時修改

程序開啟最大檔案數:退出終端後失效

ulimit -n 65535
系統開啟最大檔案數 重啟後失效

echo 6553500 > /proc/sys/fs/file-max
永久修改方法

程序開啟最大檔案數:在配置檔案最後加上兩行

vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

系統開啟最大檔案數:修改配置檔案如下

echo

"fs.file-max=6553500"

>> /etc/sysctl.conf

sysctl -p

以下是調優後的nginx配置檔案

}}

worker_processes 8;
nginx 程序數,建議按照cpu 數目來指定,一般為它的倍數 (如,2個四核的cpu計為8)。

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
為每個程序分配cpu,上例中將8 個程序分配到8 個cpu,當然可以寫多個,或者將乙個程序分配到多個cpu。

worker_rlimit_nofile 65535;
這個指令是指當乙個nginx 程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(ulimit -n)與nginx 程序數相除,但是nginx 分配請求並不是那麼均勻,所以最好與ulimit -n 的值保持一致。

現在在linux 2.6核心下開啟檔案開啟數為65535,worker_rlimit_nofile就相應應該填寫65535。

這是因為nginx排程時分配請求到程序並不是那麼的均衡,所以假如填寫10240,總併發量達到3-4萬時就有程序可能超過10240了,這時會返回502錯誤。

use epoll;
使用epoll 的i/o 模型。

與apache相類,nginx針對不同的作業系統,有不同的事件模型

a)標準事件模型

select、poll屬於標準事件模型,如果當前系統不存在更有效的方法,nginx會選擇select或poll

b)高效事件模型

kqueue:使用於 freebsd 4.1+, openbsd 2.9+, netbsd 2.0 和 macos x. 使用雙處理器的macos x系統使用kqueue可能會造成核心崩潰。

epoll: 使用於linux核心2.6版本及以後的系統。

/dev/poll:使用於 solaris 7 11/99+, hp/ux 11.22+ (eventport), irix 6.5.15+ 和 tru64 unix 5.1a+。

eventport:使用於 solaris 10. 為了防止出現核心崩潰的問題, 有必要安裝安全補丁。

worker_connections 65535;
每個程序允許的最多連線數, 理論上每台nginx 伺服器的最大連線數為worker_processes*worker_connections

keepalive_timeout 60;
keepalive 超時時間。

client_header_buffer_size 4k;
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般乙個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。

分頁大小可以用命令getconf pagesize 取得。

open_file_cache max=65535 inactive=60s;
這個將為開啟檔案指定快取,預設是沒有啟用的,max 指定快取數量,建議和開啟檔案數一致,inactive 是指經過多長時間檔案沒被請求後刪除快取。

open_file_cache_valid 80s;
這個是指多長時間檢查一次快取的有效資訊。

open_file_cache_min_uses 1;
open_file_cache 指令中的inactive 引數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一直是在快取中開啟的,如上例,如果有乙個檔案在inactive 時間內一次沒被使用,它將被移除。

nginx引數調優

不完整配置參考 可參考修改或新增以下配置 引數說明 nginx程序數,一般設定為cpu核數量,grep processor proc cpuinfo wc l 命令可獲得cpu核數。將worker process與指定cpu核繫結,降低由於多cpu核切換造成的暫存器等現場重建帶來的效能損耗 如果為2...

Nginx調優相關引數

常用的一些引數 1.工作程序數量worker processes 4 一般與cpu核心數相同 worker cpu affinity 0001 0010 0100 1000 工作程序分別與cpu繫結2.nginx最大開啟檔案數量worker rlimit nofile 65535 3.nginx事件...

Nginx優化 引數調優 康熙

優化nginx服務的worker程序個數在高併發 高訪問的web服務場景,需要事先啟動好更多的nginx程序,以確保快速響應大量併發的使用者請求。根據該伺服器所有的cpu顆數的核數加起來總和 2 worker processes xx 官方建議是和核數相同 例如一台2顆物理cpu 每個cpu的核數為...