Nginx 學習筆記(四)之 記憶體占用過高分析

2022-07-10 06:00:14 字數 1718 閱讀 4103

一、記憶體占用檢視情況

執行如下命令確定 nginx 主程序

#檢視主程序

ps aux|grep nginx

# 檢視主程序下所有子程序占用記憶體情況,以此來進行統計

ps --ppid u

(1) 查詢主程序看

命令ps aux|grep nginx

從上圖可以看到 master process 有好幾個,這是因為本伺服器安裝了多個nginx軟體的緣故,這裡主要統計 程序為 88657 的 nginx.

(2) 統計 所有子程序 記憶體

命令:ps --ppid 88657 u |awk 'beginend'

命令 ps --ppid 88657 u 可以看到 88657 下所有子程序的記憶體情況

通過 awk 對子程序 rss(記憶體值)進行累加,從上圖中可以看到其實累加後 值為:2476572k,再轉換為 m為:2418.53m

(2) 統計記憶體

命令ps aux|grep 88657 查詢主程序記憶體佔用情況

可以看到占用記憶體為 14192k 

因此nginx 占用記憶體為:所有 work process 記憶體和 + master process = 2476572k + 14192k = 2490764k,轉換為 m單位為 :2432.38m 

二、知識點

查閱資料:

了解到nginx 記憶體占有情況 和 work_processes 及 work_connections 這兩個配置有關係,可以得到如下結論:

三、解決方式

調整 work_connections、work_processes 配置值,主要是參考 

# 設定 nginx 的工作程序數量(預設值:1)

# 最大為cpu的邏輯處理器數量,比如6核心12執行緒的cpu,最大設定就是12,如果是6核心6執行緒,則為6。

# 需要考慮系統資源分配,每多乙個執行程序,記憶體占用都要多乙份(比如乙個程序為400m,兩個就是400m*2=800m)

worker_processes 1;

# 設定 nginx 最大檔案描述符開啟限制

# 在 linux 系統中,每建立乙個連線都是開啟乙個檔案描述符(作為反向**或負載均衡連線數量會翻倍,因為內外各乙個)

# 所以檔案的開啟限制決定了 nginx 的最大連線數(應大於 worker_processes *worker_connections)

# 此處配置需要參考系統的限制(ulimit -n),不能超過系統的最大限制

學習筆記之記憶體空間

組織程式的策略 1.標頭檔案 可以放置以下內容 a.使用 define和const定義的符號常量 b.結構宣告 c.類宣告 d.函式原型 e.模板宣告 2.源 檔案 宣告中函式原型的函式的 3.源 檔案 呼叫函式的程式 其中第1 第2部分,即使用者定義型別的定義和操縱使用者定義型別的函式組成了軟體包...

C 學習筆記之記憶體分配

靜態記憶體 staitc memory 儲存區域性static物件 類static資料成員 定義在任何函式之外的變數 棧記憶體 stack 儲存定義在函式內的非static物件 自由空間 free store 或稱堆記憶體 heap 儲存動態分配 即程式執行時分配 的物件 1.分配在靜態記憶體和棧記...

ios學習筆記之記憶體管理

一,記憶體管理型別定義 1,基本型別 任何c的型別,eg int,short,char,long,long long,struct,enum,union等屬於基本型別或結構體 記憶體管理對於c語言的基本型別無效 2,oc型別 非基本型別 任何繼承於nsobject類的物件都屬於oc型別 也就是除了c...