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

Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問(wèn)題解決

 更新時(shí)間:2016年01月06日 16:18:40   作者:msnshow  
這篇文章主要介紹了Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問(wèn)題解決,Cashe配置最主要的還是需要注意內(nèi)存資源的使用問(wèn)題,需要的朋友可以參考下

nginx緩存cache的5種方案
 1、傳統(tǒng)緩存之一(404)
  這個(gè)辦法是把nginx的404錯(cuò)誤定向到后端,然后用proxy_store把后端返回的頁(yè)面保存。
  配置:

  location / {
  root /home/html/;#主目錄
  expires 1d;#網(wǎng)頁(yè)的過(guò)期時(shí)間
  error_page 404 =200 /fetch$request_uri;#404定向到/fetch目錄下
  }
  location /fetch/ {#404定向到這里
  internal;#指明這個(gè)目錄不能在外部直接訪問(wèn)到
  expires 1d;#網(wǎng)頁(yè)的過(guò)期時(shí)間
 alias /html/;
 proxy_store會(huì)將文件保存到這目錄下
  proxy_passhttp://www.fzitv.net/;#后端upstream地址,/fetch同時(shí)是一個(gè)代理
  proxy_set_header Accept-Encoding '';#讓后端不要返回壓縮(gzip或deflate)的內(nèi)容,保存壓縮后的內(nèi)容會(huì)引發(fā)亂子。
  proxy_store on;#指定nginx將代理返回的文件保存
  proxy_temp_path /home/tmp;#臨時(shí)目錄,這個(gè)目錄要和/home/html在同一個(gè)硬盤(pán)分區(qū)內(nèi)

  }

  使用的時(shí)候還有要注意是nginx要有權(quán)限往/home/tmp和/home/html下有寫(xiě)入文件的權(quán)限,在linux下nginx一般會(huì)配置成nobody用戶(hù)運(yùn)行,這樣這兩個(gè)目錄就要chown nobody,設(shè)成nobody用戶(hù)專(zhuān)用,當(dāng)然也可以chmod 777,不過(guò)所有有經(jīng)驗(yàn)的系統(tǒng)管理員都會(huì)建議不要隨便使用777。
  2、傳統(tǒng)緩存之二(!-e)
  原理和404跳轉(zhuǎn)基本一致,但更簡(jiǎn)潔一些:

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

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

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

  上面的命令在一臺(tái)有3G內(nèi)存的機(jī)器上使用,因?yàn)?dev/shm默認(rèn)最大內(nèi)存是系統(tǒng)內(nèi)存的一半就是1500M,這條命令將其調(diào)大成2500M,同時(shí)shm系統(tǒng)inode數(shù)量默認(rèn)情況下可能是不夠用的,但有趣的是它可以隨意調(diào)節(jié),這里調(diào)節(jié)為480000保守了點(diǎn),但也基本夠用了。
  3、基于memcached的緩存
  nginx對(duì)memcached有所支持,但是功能并不是特別之強(qiáng),性能上還是非常之優(yōu)秀。
 

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

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

復(fù)制代碼 代碼如下:

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


  注意這個(gè)配置是在server標(biāo)簽外,levels指定該緩存空間有兩層hash目錄,第一層目錄是1個(gè)字母,第二層為2個(gè)字母,保存的文件名就會(huì)類(lèi)似/path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c;keys_zone為這個(gè)空間起個(gè)名字,10m指空間大小為10MB;inactive的5m指緩存默認(rèn)時(shí)長(zhǎng)5分鐘;max_size的2m是指單個(gè)文件超過(guò)2m的就不緩存;clean_time指定一分鐘清理一次緩存。

  location / {
  proxy_passhttp://www.fzitv.net/;
  proxy_cache NAME;#使用NAME這個(gè)keys_zone
  proxy_cache_valid 200 302 1h;#200和302狀態(tài)碼保存1小時(shí)
  proxy_cache_valid 301 1d;#301狀態(tài)碼保存一天
  proxy_cache_valid any 1m;#其它的保存一分鐘
  }

  ps:支持cache的0.7.44到0.7.51這幾個(gè)版本的穩(wěn)定性均有問(wèn)題,訪問(wèn)有些鏈接會(huì)出現(xiàn)錯(cuò)誤,所以這幾個(gè)版本最好不要在生產(chǎn)環(huán)境中使用。nginx-0.7下目前所知較為穩(wěn)定的版本是0.7.39。穩(wěn)定版0.6.36版也是近期更新,如果在配置里沒(méi)有使用到0.7的一些新標(biāo)簽新功能,也可以使用0.6.36版。

Nginx緩存的內(nèi)存占用問(wèn)題的一般解決方法
1、前些日子某服務(wù)被刷,每分鐘達(dá)到上幾百萬(wàn)請(qǐng)求;當(dāng)時(shí)采用了nginx cache來(lái)解決的;但是因?yàn)槟撤?wù)不能緩存太久,當(dāng)時(shí)設(shè)置了5s,那么帶來(lái)的問(wèn)題就是產(chǎn)生大量小文件,而且很快就刪除了。
 
2、通過(guò)

free -m
201616161611603.jpg (688×86)

會(huì)發(fā)現(xiàn)used是27G;但是通過(guò)top查看進(jìn)程占的內(nèi)存并沒(méi)有那么多

201616161659942.jpg (583×211)

那內(nèi)存去哪了?
 
3、通過(guò)查閱資料會(huì)發(fā)現(xiàn)(cat /proc/meminfo)
Slab: 22464312 kB
SReclaimable: 16474128 kB (這些是內(nèi)核保持的但是可以釋放的inode和dentry的緩存)
SUnreclaim: 5990184 kB
 
4、這些內(nèi)存為什么會(huì)不自動(dòng)清理呢?
某機(jī)房機(jī)器系統(tǒng)版本: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(正常,沒(méi)出現(xiàn)內(nèi)存快到100%的情況)
某機(jī)房機(jī)器系統(tǒng)版本: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、通過(guò)設(shè)置如下參數(shù)來(lái)設(shè)置內(nèi)存閥值

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

相關(guān)文章

  • CentOS7系統(tǒng)下用YUM安裝Nginx詳解

    CentOS7系統(tǒng)下用YUM安裝Nginx詳解

    相信大家都知道Nginx ("engine x") 是一個(gè)高性能的 HTTP和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。這篇文章將詳細(xì)給大家介紹在CentOS7系統(tǒng)下用YUM安裝Nginx的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-11-11
  • nginx網(wǎng)站服務(wù)如何配置防盜鏈(推薦)

    nginx網(wǎng)站服務(wù)如何配置防盜鏈(推薦)

    這篇文章主要介紹了nginx網(wǎng)站服務(wù)如何配置防盜鏈,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Nginx反向代理后無(wú)法獲取客戶(hù)端真實(shí)IP地址

    Nginx反向代理后無(wú)法獲取客戶(hù)端真實(shí)IP地址

    本文主要介紹了Nginx反向代理后無(wú)法獲取客戶(hù)端真實(shí)IP地址,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Nginx設(shè)置靜態(tài)頁(yè)面壓縮和緩存過(guò)期時(shí)間的方法

    Nginx設(shè)置靜態(tài)頁(yè)面壓縮和緩存過(guò)期時(shí)間的方法

    這篇文章主要介紹了Nginx設(shè)置靜態(tài)頁(yè)面壓縮和緩存過(guò)期時(shí)間的方法,也是服務(wù)器架設(shè)后的必備設(shè)置,需要的朋友可以參考下
    2015-07-07
  • Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐

    Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐

    在我們實(shí)際生產(chǎn)中,一臺(tái)服務(wù)器的處理能力、存儲(chǔ)空間是有限的,這時(shí)候就需要負(fù)載均衡,本文詳細(xì)的介紹了Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-03-03
  • 利用nginx和騰訊云免費(fèi)證書(shū)制作https的方法

    利用nginx和騰訊云免費(fèi)證書(shū)制作https的方法

    這篇文章主要介紹了利用nginx和騰訊云免費(fèi)證書(shū)制作https的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 前端加載訪問(wèn)速度優(yōu)化詳細(xì)指南(Nginx)

    前端加載訪問(wèn)速度優(yōu)化詳細(xì)指南(Nginx)

    在前端開(kāi)發(fā)中,優(yōu)化頁(yè)面加載速度成為了開(kāi)發(fā)者的一項(xiàng)重要任務(wù),下面這篇文章主要給大家介紹了關(guān)于前端加載訪問(wèn)速度優(yōu)化(Nginx)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟

    Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟

    高效地管理和分發(fā)靜態(tài)資源是至關(guān)重要的,本文主要介紹了Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 使用Nginx實(shí)現(xiàn)根據(jù) IP 匹配指定 URL

    使用Nginx實(shí)現(xiàn)根據(jù) IP 匹配指定 URL

    最近的一個(gè)項(xiàng)目,需要特定的IP訪問(wèn)某專(zhuān)題頁(yè)面的時(shí)候跳轉(zhuǎn)到網(wǎng)站首頁(yè),思考了下,直接使用NGINX實(shí)現(xiàn),分享給大家。
    2014-09-09
  • 淺談Nginx 中的兩種限流方式

    淺談Nginx 中的兩種限流方式

    這篇文章主要介紹了淺談Nginx 中的兩種限流方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11

最新評(píng)論

樟树市| 图片| 静乐县| 通化县| 南昌县| 秀山| 泰宁县| 青浦区| 鄂伦春自治旗| 东兰县| 叶城县| 芦山县| 凭祥市| 上林县| 福贡县| 迁安市| 环江| 二连浩特市| 沛县| 浦北县| 桦南县| 葵青区| 襄樊市| 闽清县| 安康市| 泽州县| 彭水| 金秀| 衡山县| 灵璧县| 吉水县| 独山县| 广昌县| 丁青县| 金秀| 淮南市| 双鸭山市| 蓬安县| 磴口县| 曲阜市| 清徐县|