1. c10k問題:無法同時併發超過(1w)客戶端請求而出現的問題。
nginx預設配置超過1w併發;
2.配置檔案conf/nginx.conf
(1)user www www;#定義nginx執行的使用者和使用者組(
2)worker_processes8;
#啟動程序,通常設定成和cpu數量相等;
(3)worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 100000000 ;
#為每個程序分配cpu,上例中將8個程序分配到8個cpu;可以將乙個程序分配多個cpu;
#ab壓測命令,可以進行併發測試;
(4)worker_rlimit_nofile 1024;
#最多開啟檔案描述符的數量;核心在同一時間可以開啟的socket檔案的數量。和最大併發數量相等。乙個程序接收的最大請求數。
#檔案描述符:核心利用檔案描述符來訪問檔案;檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。
#nginx程序能夠處理的socket的數量,受限於服務端對程序fd(檔案描述符)數量的限制。如果設定了unlumited(不限制),則會受限於作業系統記憶體,開啟檔案描述符需要消耗記憶體。
#讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。
#ulimit -n 可以修改檔案描述符數量
#檢視程序開啟檔案描述符處理請求: cd /proc/程序號/fd
#proc:linux伺服器狀態資訊存放目錄;
(5)error_log /usr/local/nginx/logs/error.log info;
#錯誤日誌定義等級debug|ifo|notice|warn|error|crit;越往後等級越高,資訊越少;越往前資訊越多;
#關閉錯誤日誌:error_log /dev/null;
#日誌可以配置在全域性段、http段、server段、location段。同乙個段中只允許出現乙個error_log;一般配置在server段,或http段;生產環境建議配置級別為warn;
(6)
pid /usr/local/nginx/nginx.pid
#工作模式及連線數上限;
(7)use epoll;
#epoll是多路復用io中的一種方式,可以提高nginx的效能。
#nginx伺服器處理和響應web請求的過程,是基於事件驅動模型的;事件驅動處理庫又被稱為多路io復用方法;最常見三種模型:select模型、poll模型、epoll模型;
#請求處理跟網路i/o模型相關,在計算機系統中i/o就是輸入輸出的意思;
#網路i/o是使用者態和核心態之間的資料交換。
#使用者傳送請求給網絡卡eth0; -> 請求傳送給10.0.0.8:80; -> 由埠應用程序通過系統呼叫(read)-> 由使用者態轉到核心態 ->核心將請求的資料**到核心緩衝區
-> 應用程序檢視核心緩衝區是否有資料 -> 如果有,則把資料拷貝到使用者態 -> 完成i/o操作;
(8)worker_connection 10000;
#單個後台worker_process程序的最大併發連線數(最大連線數=連線數x程序數);也就是單個程序能夠接收的請求數;
(9)multi_accept on;
#盡可能多的接受請求;預設開啟;
-------------------------------------
(10)include mime.types;
#識別**資源型別,推送呼叫瀏覽器預設功能;
#預設型別;
(11)access_log /usr/local/nginx/log/nginx/access.log;
#設定日誌格式;
(12)charset utf-8;
#設定標準字符集
(13)sendfile on;
#加速訪問函式;開啟會加速訪問;會在cpu的快取區生成函式呼叫,加速tcp socket的請求;
(14)autoindex on;
(15)tcp_nopush on;
#防止網路阻塞。當應用程式產生資料時,核心不會立馬封包,而是當資料累積到一定量時才會封裝,然後傳輸。這樣有助於解決網路阻塞問題。呼叫乙個tcp_cork方法呼叫。
(16)keepalive_timeout 65;
#超時時間,客戶端到伺服器端的連線持續有效時間當出現對伺服器的後續請求時,keepalive_timeout功能可以避免建立或重新建立連線。(節省伺服器資源、cpu、記憶體、網絡卡)
(17)tcp_nodelay on;
#提高資料的實時響應性;
(18)開啟gzip壓縮
#壓縮級別最大為9,級別越小壓縮比例越小,cpu處理越快。級別越高,消耗cpu就越高。
gzip_proxied any; #壓縮所有型別檔案;
gzip_vary on;
(19)client_mas_body_size 10m;
#允許客戶端請求的最大單檔案位元組數;
(20)client_body_buffer_size 128k;
#緩衝區 **緩衝使用者端 請求的 最大位元組數;
(21)proxy_connect_timeout 300;
#nginx 跟後端伺服器連線超時時間(**連線超時);
(22)proxy_send_timeout 300;
#後端伺服器資料回傳時間,超過300秒未回傳,返回502錯誤,伺服器未反應請求
(23)proxy_read_timeout 300;
#連線成功後,後端伺服器響應時間;
(24)proxy_buffer_size 4k;
#設定**伺服器儲存使用者頭資訊的緩衝區大小;
(25)proxy_buffers 4 32k;
#proxy——buffers緩衝區,網頁平均在32k以下時這樣設定:proxy_busy_buffers_size 64k;
(26)large_client_header_buffers 4 16k;
client_header_buffer_size 4k;
#客戶端請求頭部的緩衝區大小,這個可以根據系統分頁大小來設定,一般乙個請求的頭部大小不會超過1k;
#不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。分頁大小可以用命令getcof pagesize取得。
(27)open_file_cache max=1g inactive=20s;
#為開啟檔案指定快取,預設時沒有啟用的,max指定快取數量,建議和開啟檔案數一致;inactive是指經過多長時間檔案沒有背請求後刪除快取;
(28)open_file_cache_valid 30s;
#這個是指多長時間檢查一次快取的有效資訊;
(29)open_file_cache_min_uses 1;
#open_file_cache指令中的inactive引數時間內檔案的最少是使用次數,如果超過這個數字,檔案描述符一直是在快取中開啟的;
nginx 常用配置整理
測試配置檔案修改是否正確 cd data0 z nginx 1.9.6 sbin nginx c data0 z nginx 1.9.6 conf nginx test 202106.conf t重啟 cd data0 z nginx 1.9.6 sbin nginx s reload反向 upst...
nginx學習整理
nginx nginx是乙個高效能http和反向 伺服器,也是乙個imap pop3 smtp伺服器。能夠支援高達5w以上併發連線數的響應,nginx選擇了epoll kqueue作為網路io模型。nginx也可以作為負載均衡伺服器,nginx使用c語言編寫。nginx是乙個主程序和多個工作程序,工...
Nginx問題整理
最多匹配 超出無法匹配。配置resolver為dns服務的位址。proxy pass引用變數後改為每次請求動態解析網域名稱,因此需要配置resolver。變數盡量使用 的格式,防止歧義。proxy pass末尾若有 則不會把location中匹配的路徑部分 走 如果沒有 則會把匹配的路徑部分也給 走...