最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx內(nèi)存占用過高排查與處理過程

 更新時(shí)間:2025年08月18日 10:42:13   作者:alden_ygq  
Nginx內(nèi)存使用率過高就像是一場暴風(fēng)雨,會給我們的網(wǎng)站和應(yīng)用帶來不小的麻煩,但只要我們能夠冷靜分析,找出問題的根源,對癥下藥,就一定能夠化解危機(jī),所以本文給大家介紹了Nginx內(nèi)存占用過高排查與處理過程,需要的朋友可以參考下

一、排查流程

1. 確認(rèn)內(nèi)存占用情況

使用 top 或 ps 命令查看 Nginx 進(jìn)程內(nèi)存占用:

top -p $(pgrep nginx | tr '\n' ',')  # 實(shí)時(shí)查看 Nginx 進(jìn)程
ps -o pid,rss,command -p $(pgrep nginx)  # 查看 RSS(實(shí)際物理內(nèi)存)占用

使用 pmap 分析單個(gè)進(jìn)程內(nèi)存分布:

pmap -x $(pgrep nginx | head -n1) | tail -n 10  # 查看內(nèi)存映射

2. 分析內(nèi)存占用類型

共享內(nèi)存(SHM)

# 查看共享內(nèi)存段
ipcs -m | grep nginx

緩存內(nèi)存

# 檢查 proxy_cache 或 fastcgi_cache 配置
grep -r "proxy_cache" /etc/nginx/

3. 檢查 Nginx 配置

查看是否啟用高內(nèi)存消耗模塊:

# 檢查是否啟用 large_client_header_buffers
large_client_header_buffers 4 16k;  # 每個(gè)請求可能占用 64KB
 
# 檢查 proxy_buffer 配置
proxy_buffers 8 16k;  # 每個(gè)連接可能占用 128KB

4. 分析日志與監(jiān)控?cái)?shù)據(jù)

檢查錯(cuò)誤日志:

tail -f /var/log/nginx/error.log | grep -i "memory"
  • 使用監(jiān)控工具(如 Prometheus + Grafana)收集內(nèi)存指標(biāo):
    • 總內(nèi)存使用量
    • 每個(gè) worker 進(jìn)程內(nèi)存使用
    • 緩存命中率

二、常見原因與處理方法

1. 工作進(jìn)程(worker)過多

  • 問題表現(xiàn):多個(gè) worker 進(jìn)程占用大量內(nèi)存
  • 解決方法
# 根據(jù) CPU 核心數(shù)調(diào)整 worker 數(shù)量
worker_processes auto;  # 自動匹配 CPU 核心數(shù)

2. 單個(gè)請求內(nèi)存消耗過大

  • 問題表現(xiàn):處理大文件或大請求時(shí)內(nèi)存激增
  • 解決方法
# 減小緩沖區(qū)大小
client_body_buffer_size 8k;        # 客戶端請求體緩沖區(qū)
large_client_header_buffers 4 8k;  # 請求頭緩沖區(qū)
 
# 限制上傳文件大小
client_max_body_size 10m;

3. 緩存配置不合理

  • 問題表現(xiàn):proxy_cache 或 fastcgi_cache 占用過多內(nèi)存
  • 解決方法
# 優(yōu)化緩存參數(shù)
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
 
# 限制單個(gè)緩存項(xiàng)大小
proxy_cache_max_range_offset 1m;

4. 內(nèi)存泄漏或第三方模塊問題

  • 問題表現(xiàn):內(nèi)存持續(xù)增長不釋放
  • 解決方法
# 啟用內(nèi)存調(diào)試(編譯時(shí)添加 --with-debug)
error_log /var/log/nginx/error.log debug;
 
# 逐步禁用第三方模塊,定位問題模塊

5. SSL 會話緩存配置不當(dāng)

  • 問題表現(xiàn):HTTPS 流量大時(shí)內(nèi)存占用高
  • 解決方法
# 優(yōu)化 SSL 會話緩存
ssl_session_cache shared:SSL:20m;  # 減少共享內(nèi)存大小
ssl_session_timeout 10m;           # 縮短會話超時(shí)時(shí)間

三、內(nèi)存優(yōu)化建議

1. 調(diào)整工作進(jìn)程內(nèi)存分配

# 限制每個(gè) worker 進(jìn)程的最大內(nèi)存使用(需要 nginx-plus 或第三方模塊)
worker_rlimit_nofile 65535;

2. 使用內(nèi)存限制工具

# 使用 cgroups 限制 Nginx 進(jìn)程組內(nèi)存
echo "1000000000" > /sys/fs/cgroup/memory/nginx/memory.limit_in_bytes  # 限制為 1GB

3. 優(yōu)化靜態(tài)資源處理

# 禁用不必要的靜態(tài)資源緩沖區(qū)
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    sendfile on;
    tcp_nopush on;
    expires 7d;
    access_log off;
    add_header Cache-Control "public";
}

4. 使用 swap 分區(qū)作為緩沖

# 創(chuàng)建 swap 文件(8GB 示例)
dd if=/dev/zero of=/swapfile bs=1G count=8
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
 
# 調(diào)整 swappiness 參數(shù)(0-100)
echo 10 > /proc/sys/vm/swappiness

四、應(yīng)急處理措施

1. 臨時(shí)減少并發(fā)連接

# 限制每個(gè) IP 的并發(fā)連接數(shù)
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 20;  # 每個(gè) IP 最多 20 個(gè)連接

2. 關(guān)閉高內(nèi)存消耗功能

# 臨時(shí)關(guān)閉緩存
proxy_cache off;
 
# 臨時(shí)關(guān)閉 SSL 會話緩存
# ssl_session_cache shared:SSL:20m; → 注釋掉此行

3. 重啟 Nginx 釋放內(nèi)存

# 平滑重啟(不中斷服務(wù))
nginx -s reload
 
# 強(qiáng)制重啟
systemctl restart nginx

五、驗(yàn)證優(yōu)化效果

1. 壓力測試對比

# 使用 wrk 進(jìn)行壓力測試
wrk -t12 -c400 -d30s http://example.com/
 
# 對比優(yōu)化前后內(nèi)存增長曲線

2. 長期監(jiān)控指標(biāo)

  • 內(nèi)存使用率趨勢圖
  • 單個(gè)請求內(nèi)存消耗分布
  • OOM(Out of Memory)事件記錄

3. 內(nèi)存泄漏檢測

# 使用 valgrind 檢測內(nèi)存泄漏(僅建議在測試環(huán)境使用)
valgrind --leak-check=full --show-leak-kinds=all /usr/sbin/nginx -g "daemon off;"

通過以上步驟,可以系統(tǒng)性地排查和解決 Nginx 內(nèi)存占用過高問題,同時(shí)建立長效的內(nèi)存監(jiān)控機(jī)制,避免因內(nèi)存問題導(dǎo)致服務(wù)中斷。

以上就是Nginx內(nèi)存占用過高排查與處理過程的詳細(xì)內(nèi)容,更多關(guān)于Nginx內(nèi)存占用過高的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Nginx實(shí)現(xiàn)URL重定向的簡單方法

    利用Nginx實(shí)現(xiàn)URL重定向的簡單方法

    使用Nginx的重定向功能時(shí),除了可以重定向到新域名,還可以將請求重定向到特定的協(xié)議上,下面這篇文章主要給大家介紹了關(guān)于如何利用Nginx實(shí)現(xiàn)URL重定向的簡單方法,需要的朋友可以參考下
    2022-04-04
  • Nginx實(shí)現(xiàn)動態(tài)攔截非法訪問ip的方法

    Nginx實(shí)現(xiàn)動態(tài)攔截非法訪問ip的方法

    最近在訪問時(shí)不時(shí)會被暴力刷量,爬蟲和惡意攻擊導(dǎo)致數(shù)據(jù)庫,服務(wù)等癱瘓,所以本文介紹了在Nginx上實(shí)現(xiàn)一個(gè)動態(tài)攔截IP的方法,具體是當(dāng)某個(gè)IP在1分鐘內(nèi)訪問超過60次時(shí),將其加入Redis并攔截,攔截時(shí)間默認(rèn)1天,需要的朋友可以參考下
    2025-02-02
  • Nginx實(shí)現(xiàn)非套路鏡像站的踩坑記錄

    Nginx實(shí)現(xiàn)非套路鏡像站的踩坑記錄

    這篇文章主要給大家介紹了關(guān)于Nginx實(shí)現(xiàn)非套路鏡像站的踩坑記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • nginx docker官方鏡像添加自定義命令自動退出方式

    nginx docker官方鏡像添加自定義命令自動退出方式

    文章介紹了在使用Nginx官方Docker鏡像時(shí)遇到容器自動退出的問題,并解釋了原因,通過在CMD命令中添加`-g 'daemon off'`參數(shù),可以確保Nginx在前臺運(yùn)行,從而使容器不會因?yàn)镃MD命令執(zhí)行完畢而自動退出
    2026-01-01
  • 利用Nginx反向代理解決跨域問題詳解

    利用Nginx反向代理解決跨域問題詳解

    這篇文章主要介紹了利用Nginx反向代理解決跨域問題詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • Nginx實(shí)現(xiàn)前端灰度發(fā)布

    Nginx實(shí)現(xiàn)前端灰度發(fā)布

    灰度發(fā)布是一種重要的策略,它允許我們在不影響所有用戶的情況下,逐步推出新功能或更新,通過灰度發(fā)布,我們可以測試新版本的穩(wěn)定性和性能,下面就來介紹一下前端灰度發(fā)布的使用,感興趣的可以了解一下
    2025-03-03
  • 詳解Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化

    詳解Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化

    這篇文章主要介紹了Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • nginx調(diào)用php-fpm出錯(cuò)解決方法和nginx配置詳解

    nginx調(diào)用php-fpm出錯(cuò)解決方法和nginx配置詳解

    這篇文章介紹了nginx調(diào)用php-fpm出錯(cuò)的解決方法,最后給出了nginx配置方法,需要的朋友可以參考下
    2014-03-03
  • Nginx防盜鏈與服務(wù)優(yōu)化配置的全過程

    Nginx防盜鏈與服務(wù)優(yōu)化配置的全過程

    由于Nginx本身的一些優(yōu)點(diǎn),輕量,開源,易用,越來越多的公司使用nginx作為自己公司的web應(yīng)用服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Nginx防盜鏈與服務(wù)優(yōu)化配置的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Nginx在linux和windows下代理靜態(tài)文件夾方式

    Nginx在linux和windows下代理靜態(tài)文件夾方式

    Windows下配置Nginx代理E盤data文件夾,開發(fā)端口7766;Linux下配置Nginx代理home/mydata文件夾,開發(fā)端口7766,重啟Nginx方法:Windows直接nginx -s reload;Linux根據(jù)安裝位置使用find命令找到sbin目錄后,使用/usr/sbin/nginx -s reload重啟
    2025-11-11

最新評論

隆林| 仁布县| 辽宁省| 丹巴县| 镇康县| 黄陵县| 辉县市| 宁陵县| 延川县| 资阳市| 德江县| 南昌市| 会同县| 江口县| 博野县| 成武县| 蒲江县| 吉木萨尔县| 平舆县| 疏附县| 惠州市| 隆林| 亚东县| 东阿县| 云林县| 中山市| 临夏市| 阳原县| 玉林市| 遂宁市| 顺义区| 碌曲县| 衡阳县| 绥滨县| 郎溪县| 任丘市| 洛隆县| 临清市| 宽城| 确山县| 定兴县|