
進程虛擬記憶體 = 物理常駐記憶體 + Swap Out 頁面。關鍵指標:
VIRT:虛擬記憶體總量(含程式碼、資料、共享庫、Swap Out 頁面)RES:常駐物理記憶體(Real RSS)
kswapd 核心執行緒負責回收,掃描 Active/Inactive LRU 列表vm.swappiness = 0# 查看目前值
cat /proc/$(pidof -s mysqld)/oom_adj
# 設為 -17 完全禁用 OOM Killer 對此進程
echo -17 > /proc/$(pidof -s mysqld)/oom_adj
參考核心定義 OOM_DISABLE (-17)、OOM_ADJUST_MIN (-16)、OOM_ADJUST_MAX (15)。但最佳做法仍是保障足夠實體記憶體 + 設 swappiness=1,避免犧牲其他進程。
vmstat 2
# 關鍵欄位:si (swap in/s), so (swap out/s)
sar -B 2 3
# pgpgout/s: 每秒 page out KB 數
# majflt/s: Major Page Fault(需從磁碟讀取頁面),極重要指標
free -m:關注 -/+ buffers/cache 行的 free 值,而非首行ps -mp <PID> -o THREAD,pmem,rss,vsz,tid,pid:mysqld 記憶體佔用pmap -x <PID>:詳細映射表,Mapping 欄顯示 [anon](匿名分配)、[stack]、或檔案映射
vm.dirty_background_ratio=10(非同步刷新觸發點)vm.dirty_ratio=20(同步刷新阻塞點,降低可減輕 MySQL 記憶體壓力但增加磁碟 I/O)