高效能Nginx最佳實踐

2022-07-29 13:09:15 字數 2597 閱讀 8884

三,nginx配置location

配置塊:server

詳情:location會嘗試根據使用者請求中的uri來匹配location的uri表示式,如果可以匹配,就選擇location塊中的配置來處理使用者請求。

示例:

四,nginx常規配置:

(一),定義環境變數:

語法:evn var|var=value

作用:使用者可以直接設定作業系統上的環境變數

舉例:evn testpath=/tmp;

(二),嵌入其他配置檔案

語法:include/path/file

作用:可以把其他配置檔案引入進來,路徑可以是絕對路徑,也可以時相對路徑。還可以含有萬用字元。

(三),pid檔案

語法:pid path/file;

預設:pid logs/nginx.pid;

作用:儲存master程序的pid檔案存放路徑。

(四),nginx worker程序執行的使用者和使用者組

語法:user username[groupname]

預設:user nobody nobody

作用:master程序fork出的程序在哪個使用者和使用者組下

(五),指定nginx worker程序可以開啟的最大控制代碼描述符個數

語法:worker_rlimit_nofile limit;

作用:設定乙個worker可以開啟的最大控制代碼數

(六),限制訊號佇列:

語法:worker_rlimit_sigpending limit;

作用:設定每個使用者發往nginx的訊號佇列的大小。也就是說,當某個使用者的訊號佇列滿了,這個使用者再傳送的訊號量就會被丟掉。

五,nginx高效能配置:

(一)nginx worker程序個數

語法:worker_processes number;

預設:worker_processes 1;

作用:在master_worker執行方式下,定義worker程序的個數。worker程序的數量會直接影響效能。每個worker都是單執行緒的程序,他會呼叫各個模組來實現各種功能。如果確定這些模組不會出現堵塞式呼叫,那麼程序數可以和cpu核心數一樣;反之,則稍少一些。

(二)繫結nginx worker程序到指定的cpu核心

語法:worker_cpu_affinity cpumask

作用:假設每個worker都是很繁忙的,如果多個程序都在搶同乙個cpu,那麼就會出現同步問題。反之,如果每個worker程序獨享乙個cpu,就實現了完全的併發。

舉例:worker_processes 4;

worker_cpu_affinity 1000 0100 0010 0001;

(三),ssl硬體加速

語法:ssl_engine device;

作用:如果伺服器上有ssl硬體加速裝置,那麼就可以進行配置以加快ssl協議的處理速度。使用者可以用openssl提供的命令來檢視是否有ssl硬體加速裝置:openssl engine -t

六,nginx事件配置

(一)是否開啟accept鎖

語法:accept_mutex [on/off];

預設:accept_mutex on;

作用:accept_mutex是nginx的負載均衡鎖。這把鎖可以讓多個worker程序輪流的,序列化的與新的客戶端建立tcp連線。accept鎖預設是開啟的,如果關閉它,那麼建立tcp連線的耗時會更短,但不利於負載均衡,因此不建議關閉。

(二)使用accept鎖後到真正建立連線之間的延遲時間

語法:accept_mutex_delay nms;

預設:accept_mutex_delay 500ms

作用:在使用accept鎖後,同一時間只有乙個worker程序能夠拿到accept鎖。這個accept鎖不是堵塞鎖,如果取不到會立刻返回。如果只有乙個worker程序試圖取鎖而沒有取到,他至少要等待accept_mutex_delay定義的時間才能再次試圖取鎖。

(三)批量建立新連線:

語法:multi_accept[on/off];

預設:multi_accept off;

作用:當事件模型有新連線時,盡可能的對本次排程中客戶端發起的所有tcp請求都建立連線。

(四)選擇事件模型:

語法:use[kqueue|rtsig|epoll|dev|poll|select|poll|]

作用:對於linux系統,可供選擇的事件驅動模型有:poll,select,epoll三種,一般來說,epoll是效能最高的。

(五)每個worker的最大連線數

語法:worker_connections number;

作用:定義每個worker程序可以同時處理的最大連線數。

Qzone 高效能 HTTPS 實踐

自從去年qq空間移動端頁面開始切換到https之後,頁面效能遇到了比較大的挑戰,https對頁面訪問速度帶來了比較大的影響,所以我們通過實踐總結了一些能夠提公升https頁面訪問速度的方法,這些資料都是我們和stgw的同事反覆實驗 多次分析所得到的,希望能夠減少大家對於全站啟用https的顧慮。我們...

效能最佳實踐 MongoDB索引

歡迎閱讀mongodb效能最佳實踐系列部落格的第三篇。在本系列中,我們將討論在大規模資料下實現高效能,需要在許多重要維度上進行考慮的關鍵因素,其中包括 根據我們在過去的15年裡為多個不同資料庫 商工作的經驗,可以肯定地說,如何定義合適的索引是技術支援團隊必須解決的首要效能問題。所以接下來會介紹一些有...

最佳實踐React效能優化

1 基本使用 使用方法 import react,from react import from utils const loadinghome dynamic import components home const loadinguser dynamic import components use...