你好,我是趙興晨,97年文科程序員。?????
在 Nginx企業級負載均衡:技術詳解系列(8)—— Nginx核心配置詳解(默認配置文件)文章中,咱們討論了Nginx核心配置文件的基礎知識,然而,Nginx的知識點還有很多,總有一些精妙的細節等著咱們去發掘。
今天,咱們來深入發掘一下Nginx的全局配置指令,這些指令對于確保Nginx服務器的高效和穩定運行具有決定性的作用。
為了幫助大家更好地理解和應用,我將這些配置指令分為幾個類別,讓我們一一解析它們的重要性和應用場景。
正常運行的必備配置
1、用戶和組:設置啟動Nginx工作進程的用戶和組
user nginx nginx;
2、工作進程數:根據CPU核心數設置Nginx工作進程的數量,一般設置為和CPU核心數相同 auto即可。
worker_processes [number | auto];
優化性能相關的配置
1、CPU親和性:worker_cpu_affinity 將Nginx工作進程綁定到特定的CPU核心,減少CPU資源分配開銷,提升性能。默認Nginx是不進行多進程綁定的,綁定并不是意味著當前nginx進程獨占一核心CPU,但是可以保證此進程不會運行在其他核心上,這就極大減少了nginx的工作進程在不同的CPU核心上來回跳轉,減少了CPU對進程資源分配與回收以及內存管理等。
以下是示例配置
worker_cpu_affinity 00000001 00000010 00000100 00001000;
用于調試及定位問題相關的配置
1、錯誤日志記錄:error_log 設置錯誤日志的路徑和級別,便于問題排查。?
語法:error_log file [debug | info | notice | warn | error | crit | alert | emerg]
以下是示例配置
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log /apps/nginx/logs/error.log error;
事件驅動相關的配置
1、進程PID文件:pid 指定nginx主進程PID文件的存放路徑。
以下是示例配置
pid /usr/local/nginx/logs/nginx.pid;
其他重要配置
1、工作進程優先級:worker_priority 設置工作進程優先級,-20~20(19)
worker_priority 0;
2、文件描述符限制:worker_rlimit_nofile 所有worker進程能打開的文件數量上限,包括:Nginx的所有連接(例如與代理服務器的連接數),而不僅僅是客戶端的連接,另一個考慮因素是實際的并發連接數不能超過系統級別的最大打開文件數的限制。最好與 ulimit -n 或者 limits.conf的值保持一致。
worker_rlimit_nofile 65536;
3、前臺運行:daemon off; 用于測試或Docker等環境,使Nginx在前臺運行。
4、工作模式:master_process off|on 控制Nginx的master-worker模式,通常用于開發調試場景,默認為on。
Events模塊配置
1、最大并發連接數: worker_connections 65536; 設置單個工作進程的最大并發連接數。?????
2、事件驅動模型:use epoll; 使用epoll事件驅動,Nginx支持眾多的事件驅動,比如select、poll、epoll,只能設置在events模塊中。????????
3、驚群效應控制:accept_mutes on; on為同一時刻一個請求輪流worker進程處理,而防止被同時喚醒所有worker,避免多個睡眠進程被喚醒的設置,默認為off,心情求會喚醒所有worker進程,此過程稱為“驚群”,因此Nginx剛安裝完以后要進行適當的優化。建議設置為 on。??????
4、多連接接受:multi_accept on; on時Nginx服務器的每個工作進程可以同時接受多個新的網絡連接,此指令默認為off,即默認為一個工作進程只能一次接受一個新的網絡連接,打開后幾個同時接受多個。建議設置為on。
OK,以上就是今天的分享,感謝您的閱讀,期待在下一篇文章中與您再次相遇。保持好奇,繼續探索,讓我們一起在技術的道路上不斷前行!
最后,我為您準備了一份特別的技術學習禮物,包括:
Linux學習筆記:詳盡記錄了Linux的核心知識點和實用技巧。
Java基礎筆記:為您打下堅實的Java編程基礎。
Java面試總結:十萬字的面試經驗,助您輕松應對各種技術面試。
【一鍵領取】
領取這份資料包,您只需輕松一掃:
按住👇🏻圖片,掃描二維碼,備注:【大禮包】?
通過好友驗證后,您的的專屬資料包就會立即發送給您。
Linux系統學習筆記、Java基礎學習筆記、10萬字Java面試總結