Nginx學習筆記二 nginx的配置

2021-07-09 01:52:57 字數 2053 閱讀 6130

nginx在執行時,至少必須載入幾個核心模組和乙個事件類模組。這些模組執行時所支援的配置項稱為基本配置——所有其他模組執行時都需要依賴的配置。

按照使用者使用時的預期功能分為四類:

1. 用於除錯、定位問題的配置項

2. 正常執行的必備配置項

3. 優化效能的配置項

4. 事件類配置項(有些事件類配置項規劃到優化效能類配置項,是因為它們雖然屬於 events{}塊,但是作用卻是優化效能)。

1)用於除錯、定位問題的配置項

當日誌級別設定為debug時,必須在configure時加入 –with-debug配置項

2)正常執行的必備配置項

3)優化效能的配置項

worker_processes 4;

worker_cpu_affinity 1000 0100 0010 0001;

注意:worker_cpu_affinity配置僅對linux作業系統有效。linux 作業系統是通過系統呼叫sched_setaffinity()來實現的。

了解系統呼叫schd_setaffinity的使用方法,如何將程序通過cpu mask繫結到一起。

cpu 親和性(affinity) 就是程序要在某個給定的 cpu 上盡量長時間地執行而不被遷移到其他處理器的傾向性。linux 核心程序排程器天生就具有被稱為 軟 cpu 親和性(affinity) 的特性,這意味著程序通常不會在處理器之間頻繁遷移。這種狀態正是我們希望的,因為程序遷移的頻率小就意味著產生的負載小。開發人員可以程式設計實現 硬cpu親和性(affinity)。這意味著應用程式可以顯式地指定程序在哪個(或哪些)處理器上執行。

在 linux 核心中,所有的程序都有乙個相關的資料結構,稱為 task_struct。這個結構非常重要,原因有很多;其中與 親和性(affinity)相關度最高的是 cpus_allowed 位掩碼。這個位掩碼由 n 位組成,與系統中的 n 個邏輯處理器一一對應。 具有 4 個物理 cpu 的系統可以有 4 位。如果這些 cpu 都啟用了超執行緒,那麼這個系統就有乙個 8 位的位掩碼。

如果為給定的程序設定了給定的位,那麼這個程序就可以在相關的 cpu 上執行。因此,如果乙個程序可以在任何 cpu 上執行,並且能夠根據需要在處理器之間進行遷移,那麼位掩碼就全是 1。實際上,這就是 linux 中程序的預設狀態。

linux 核心 api 提供了一些方法,讓使用者可以修改位掩碼或檢視當前的位掩碼:

sched_setaffinity() (用來修改位掩碼)

sched_getaffinity() (用來檢視當前的位掩碼)

使用int sysconf(int name)函式獲取系統的cpu個數

#include int processornum = sysconf(_sc_nprocessors_conf);
for example

#define _gnu_source

#include #include #include #include #include #include #define max_thread_num 10

int num = 0; //number of processors on the machine

void* thread_func(void* arg)

cpu_zero(&get);

if (sched_getaffinity(0, sizeof(get), &get) == -1)

int i;

for (i=0; ireturn null;

}int main(int argc, char* argv)

for (i=0; ireturn 0;

}

Nginx學習筆記(二)

在 訪問過程中,經常會遇見各種各樣的錯誤,如找不到訪問的頁面則會提示404 not found 錯誤,沒有訪問許可權會提示403 forbidden 等,對於普通人而言,這樣的提示介面 並不友好。在nginx 的主配置檔案中,給出了以下的處理方式。errr page 500 502 503 504 ...

nginx學習筆記(二)訊號控制nginx

nginx學習筆記 二 訊號控制nginx int quit ps aux grep nginx或者ps ef hrep nginx檢視nginx的程序資訊,nginx master 主程序,管理子程序的 sudo kill int nginx master的程序號殺掉nginx程序 暴力 sudo...

nginx 學習筆記 二 除錯

安裝好nginx後,我們可以用gdb看一下啟動的過程,了解一下nginx的 nginx會做一系列的初始化,但是在執行ngx daemon前一定要設定follow fork mode。如上 所示,父程序會走default分支。隨後nginx會把主程序號寫到檔案。如果不做特別配製單程序執行,那麼會進入n...