亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

Nginx緩存Cache的配置方案以及相關內存占用問題解決

2024-08-30 12:27:56
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Nginx緩存Cache的配置方案以及相關內存占用問題解決,Cashe配置最主要的還是需要注意內存資源的使用問題,需要的朋友可以參考下
 

nginx緩存cache的5種方案
 1、傳統緩存之一(404)

  這個辦法是把nginx的404錯誤定向到后端,然后用proxy_store把后端返回的頁面保存。
  配置:

  location / {  root /home/html/;#主目錄  expires 1d;#網頁的過期時間  error_page 404 =200 /fetch$request_uri;#404定向到/fetch目錄下  }  location /fetch/ {#404定向到這里  internal;#指明這個目錄不能在外部直接訪問到  expires 1d;#網頁的過期時間 alias /html/; proxy_store會將文件保存到這目錄下  proxy_passhttp://www.49028c.com/;#后端upstream地址,/fetch同時是一個代理  proxy_set_header Accept-Encoding '';#讓后端不要返回壓縮(gzip或deflate)的內容,保存壓縮后的內容會引發亂子?! roxy_store on;#指定nginx將代理返回的文件保存  proxy_temp_path /home/tmp;#臨時目錄,這個目錄要和/home/html在同一個硬盤分區內  }

  使用的時候還有要注意是nginx要有權限往/home/tmp和/home/html下有寫入文件的權限,在linux下nginx一般會配置成nobody用戶運行,這樣這兩個目錄就要chown nobody,設成nobody用戶專用,當然也可以chmod 777,不過所有有經驗的系統管理員都會建議不要隨便使用777。
  2、傳統緩存之二(!-e)
  原理和404跳轉基本一致,但更簡潔一些:

  location / {  root /home/html/;  proxy_store on;  proxy_set_header Accept-Encoding '';  proxy_temp_path /home/tmp;  if ( !-f $request_filename )  {  proxy_passhttp://www.49028c.com/;  }  }

  可以看到這個配置比404節約了不少代碼,它是用!-f來判斷請求的文件在文件系統上存不存在,不存在就proxy_pass到后端,返回同樣是用proxy_store保存。
  兩種傳統緩存都有著基本一樣的優點和缺點:
  缺點1:不支持帶參數的動態鏈接,比如read.php?id=1,因為nginx只保存文件名,所以這個鏈接只在文件系統下保存為read.php,這樣用戶訪問read.php?id=2時會返回不正確的結果。同時不支持http://www.49028c.com/這種形式的首頁和二級目錄http://www.49028c.com/download/,因為nginx非常老實,會將這樣的請求照鏈接寫入文件系統,而這個鏈接顯然是一個目錄,所以保存失敗。這些情況都需要寫rewrite才能正確保存。
  缺點2:nginx內部沒有緩存過期和清理的任何機制,這些緩存的文件會永久性地保存在機器上,如果要緩存的東西非常多,那就會撐暴整個硬盤空間。為此可以使用一個shell腳本定期清理,同時可以撰寫php等動態程序來做實時更新。
  缺點3:只能緩存200狀態碼,因此后端返回301/302/404等狀態碼都不會緩存,假如恰好有一個訪問量很大的偽靜態鏈接被刪除,那就會不停穿透導致后端承載不小壓力。
  缺點4:nginx不會自動選擇內存或硬盤作為存儲介質,一切由配置決定,當然在當前的操作系統里都會有操作系統級的文件緩存機制,所以存在硬盤上也不需要過分擔心大并發讀取造成的io性能問題。
  nginx傳統緩存的缺點也是它和squid等緩存軟件的不同之特色,所以也可看作其優點。在生產應用中它常常用作和squid的搭檔,squid對于帶?的鏈接往往無法阻擋,而nginx能將其訪問攔住,例如:http://vevb.com/?和http://vevb.com/在squid上會被當做兩個鏈接,所以會造成兩次穿透;而nginx只會保存一次,無論鏈接變成http://vevb.com/?1還是http://vevb.com/?123,均不能透過nginx緩存,從而有效地保護了后端主機。
  nginx會非常老實地將鏈接形式保存到文件系統中,這樣對于一個鏈接,可以很方便地查閱它在緩存機器上的緩存狀態和內容,也可以很方便地和別的文件管理器如rsync等配合使用,它完完全全就是一個文件系統結構。
  這兩種傳統緩存都可以在linux下將文件保存到/dev/shm里,一般我也是這么做的,這樣可以利用系統內存來做緩存,利用內存的話,清理過期內容速度就會快得多。使用/dev/shm/時除了要把tmp目錄也指向到/dev/shm這個分區外,如果有大量小文件和目錄,還要修改一下這個內存分區的inode數量和最大容量:
 

 mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm

  上面的命令在一臺有3G內存的機器上使用,因為/dev/shm默認最大內存是系統內存的一半就是1500M,這條命令將其調大成2500M,同時shm系統inode數量默認情況下可能是不夠用的,但有趣的是它可以隨意調節,這里調節為480000保守了點,但也基本夠用了。
  3、基于memcached的緩存
  nginx對memcached有所支持,但是功能并不是特別之強,性能上還是非常之優秀。
 

 location /mem/ {  if ( $uri ~ "^/mem/([0-9A-Za-z_]*)$" )  {  set $memcached_key "$1";  memcached_pass  192.168.1.2:11211;  }  expires 70;  }

  這個配置會將http://vevb.com/mem/abc指明到memcached的abc這個key去取數據。
  nginx目前沒有寫入memcached的任何機制,所以要往memcached里寫入數據得用后臺的動態語言完成,可以利用404定向到后端去寫入數據。
  4、基于第三方插件ncache
  ncache是新浪兄弟開發的一個不錯的項目,它利用nginx和memcached實現了一部分類似squid緩存的功能,我并沒有使用這個插件的經驗,可以參考:
  http://code.google.com/p/ncache/
  5、nginx新開發的proxy_cache功能
  從nginx-0.7.44版開始,nginx支持了類似squid較為正規的cache功能,目前還處于開發階段,支持相當有限,這個緩存是把鏈接用md5編碼hash后保存,所以它可以支持任意鏈接,同時也支持404/301/302這樣的非200狀態。
  配置:
  首先配置一個cache空間:

 

復制代碼代碼如下:

  proxy_cache_path /path/to/cache levels=1:2 keys_zone=NAME:10m inactive=5m max_size=2m clean_time=1m;

 

 


  注意這個配置是在server標簽外,levels指定該緩存空間有兩層hash目錄,第一層目錄是1個字母,第二層為2個字母,保存的文件名就會類似/path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c;keys_zone為這個空間起個名字,10m指空間大小為10MB;inactive的5m指緩存默認時長5分鐘;max_size的2m是指單個文件超過2m的就不緩存;clean_time指定一分鐘清理一次緩存。

 

  location / {  proxy_passhttp://www.49028c.com/;  proxy_cache NAME;#使用NAME這個keys_zone  proxy_cache_valid 200 302 1h;#200和302狀態碼保存1小時  proxy_cache_valid 301 1d;#301狀態碼保存一天  proxy_cache_valid any 1m;#其它的保存一分鐘  }

  ps:支持cache的0.7.44到0.7.51這幾個版本的穩定性均有問題,訪問有些鏈接會出現錯誤,所以這幾個版本最好不要在生產環境中使用。nginx-0.7下目前所知較為穩定的版本是0.7.39。穩定版0.6.36版也是近期更新,如果在配置里沒有使用到0.7的一些新標簽新功能,也可以使用0.6.36版。

Nginx緩存的內存占用問題的一般解決方法
1、前些日子某服務被刷,每分鐘達到上幾百萬請求;當時采用了nginx cache來解決的;但是因為某服務不能緩存太久,當時設置了5s,那么帶來的問題就是產生大量小文件,而且很快就刪除了。
 
2、通過

free -m
Nginx緩存Cache的配置方案以及相關內存占用問題解決

會發現used是27G;但是通過top查看進程占的內存并沒有那么多

Nginx緩存Cache的配置方案以及相關內存占用問題解決

那內存去哪了?
 
3、通過查閱資料會發現(cat /proc/meminfo)
Slab: 22464312 kB
SReclaimable: 16474128 kB (這些是內核保持的但是可以釋放的inode和dentry的緩存)
SUnreclaim: 5990184 kB
 
4、這些內存為什么會不自動清理呢?
某機房機器系統版本:Linux  2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(正常,沒出現內存快到100%的情況)
某機房機器系統版本:Linux  2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux (不釋放)
 
5、通過設置如下參數來設置內存閥值

sysctl -w vm.extra_free_kbytes=6436787sysctl -w vm.vfs_cache_pressure=10000


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人伊成久久人综合网小说| 欧美大片va欧美在线播放| 国产免费一区视频观看免费| 欧美精品免费看| 2020国产精品视频| 国产精品三级久久久久久电影| 日韩美女视频在线观看| 欧美小视频在线| 久久精品亚洲热| 欧美日韩美女视频| 国产精品毛片a∨一区二区三区|国| 国产91露脸中文字幕在线| 日韩成人中文电影| 性夜试看影院91社区| 中文字幕亚洲综合久久筱田步美| 中文字幕免费精品一区高清| 福利精品视频在线| 亚洲在线视频观看| 亚洲精品国产精品国自产观看浪潮| 成人在线国产精品| 国产成人亚洲综合91精品| 亚洲成av人乱码色午夜| 欧美成人午夜激情视频| 日韩亚洲一区二区| 日韩精品视频在线播放| 亚洲精品国产精品国产自| 久久久免费精品视频| 久久999免费视频| 精品网站999www| 欧美在线播放视频| 欧美大片在线免费观看| 国产一区二区欧美日韩| 2021久久精品国产99国产精品| 26uuu另类亚洲欧美日本老年| 日韩在线观看免费| 久久精品男人天堂| 91欧美激情另类亚洲| 国产日韩欧美自拍| 欧美成人亚洲成人| 久久精品视频在线| 亚洲精品v欧美精品v日韩精品| 日韩国产欧美精品在线| 中文字幕久精品免费视频| 在线观看视频亚洲| 少妇高潮久久久久久潘金莲| 亚洲最大激情中文字幕| 2021国产精品视频| 黄色精品一区二区| 欧美日韩美女在线| 日韩激情av在线播放| 国产美女直播视频一区| 欧美在线视频观看免费网站| 日本久久久久久| 性欧美视频videos6一9| 亚洲精品日韩激情在线电影| 欧美日韩aaaa| 欧美激情中文字幕乱码免费| 亚洲人成77777在线观看网| 久久中文精品视频| 亚洲视频专区在线| 欧美激情精品久久久久久久变态| 97精品久久久中文字幕免费| 91精品综合视频| 日韩av在线免费看| 91久久精品国产| 亚洲人成伊人成综合网久久久| 欧美日韩一区二区免费在线观看| 国产丝袜一区二区三区免费视频| 日韩**中文字幕毛片| 国产一区在线播放| 国产一区二区三区免费视频| 国产视频自拍一区| 91免费在线视频网站| 亚洲欧美国产高清va在线播| 久久久国产精品一区| 九色成人免费视频| 日韩在线观看免费高清| 国产精品丝袜白浆摸在线| 欧美裸体xxxx| 美女久久久久久久| 欧美精品免费看| 久久久日本电影| 亚洲摸下面视频| 国产美女扒开尿口久久久| 国产精品久久不能| 91色视频在线观看| 国产一区二区激情| 高清欧美电影在线| 国产精品91免费在线| 欧美激情手机在线视频| 成人性生交大片免费看小说| 精品国产依人香蕉在线精品| 日韩不卡中文字幕| 最新91在线视频| 日韩女在线观看| 亚洲最大在线视频| 中文字幕亚洲欧美日韩在线不卡| 亚洲天堂av综合网| 成人黄色av网| 超碰日本道色综合久久综合| 81精品国产乱码久久久久久| 亲爱的老师9免费观看全集电视剧| 一区二区三区 在线观看视| 91精品视频专区| 成人久久一区二区三区| 日韩成人av网| 91久久精品国产91性色| 欧美猛男性生活免费| 91精品在线播放| 国产精品久久久久久五月尺| 欧美亚洲成人精品| 欧美激情免费观看| 亚洲社区在线观看| 精品成人国产在线观看男人呻吟| 日日狠狠久久偷偷四色综合免费| 欧美人与物videos| 久久视频在线免费观看| 久久激情五月丁香伊人| 日本一区二区不卡| 亚洲字幕在线观看| 2019av中文字幕| 成人97在线观看视频| 97视频com| 中文字幕亚洲自拍| 亚洲精品福利在线观看| 久久99亚洲热视| 国产在线拍揄自揄视频不卡99| 欧美激情极品视频| 欧美在线观看视频| 18性欧美xxxⅹ性满足| 51ⅴ精品国产91久久久久久| 亚洲第一页中文字幕| 国产精品视频久| 国产精品一区二区三区毛片淫片| 91久久久久久久| 亚洲精品久久久久久久久久久| 日韩最新中文字幕电影免费看| 亚洲aa在线观看| 国产精品国语对白| 欧美视频二区36p| 欧美激情精品久久久久久大尺度| 欧美激情亚洲一区| 亚洲xxxx视频| 国产欧美最新羞羞视频在线观看| 日韩亚洲欧美中文高清在线| 欧美在线性爱视频| 性金发美女69hd大尺寸| 精品久久久久久久久中文字幕| 97在线日本国产| 成人黄色在线免费| 国产成人精品国内自产拍免费看| 欧美激情xxxx性bbbb| 中文字幕免费精品一区高清| 亚洲淫片在线视频| 精品久久久一区二区| 欧美一级电影在线| 亚洲成色777777在线观看影院| 久久免费视频这里只有精品| 国产精品免费视频xxxx| 国产精品视频yy9099| 91香蕉电影院| 国产精品盗摄久久久| 日韩高清av一区二区三区| 97精品久久久中文字幕免费|