青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

   C++ 技術中心

   :: 首頁 :: 聯系 ::  :: 管理
  160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

公告

鄭重聲明:本BLOG所發表的原創文章,作者保留一切權利。必須經過作者本人同意后方可轉載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(27)

搜索

  •  

最新隨筆

最新評論

評論排行榜

Memcached存儲單個item最大數據是在1MB內,如果數據超過1M,存取set和get是都是返回false,而且引起性能的問題。

我們之前對排行榜的數據進行緩存,由于排行榜在我們所有sql select查詢里面占了30%,而且我們排行榜每小時更新一次,所以必須對數據做緩存。為了清除緩存方便,把所有的用戶的數據放在同一key中,由于memcached:set的時候沒有壓縮數據。在測試服測試的時候,沒發現問題,當上線的時候,結果發現,在線人數剛剛490人的時候,服務器load average飄到7.9。然后我們去掉緩存,一下子就下降到0.59。

所以Memcahce不適合緩存大數據,超過1MB的數據,可以考慮在客戶端壓縮或拆分到多個key中。大的數據在進行load和uppack到內存的時候需要花很長時間,從而降低服務器的性能。

Memcached支持最大的存儲對象為1M。這個值由其內存分配機制決定的。

memcached默認情況下采用了名為Slab Allocator的機制分配、管理內存。在該機制出現以前,內存的分配是通過對所有記錄簡單地進行mallocfree來進行的。但是,這種方式會導致內存碎片,加重操作系統內存管理器的負擔,最壞的情況下,會導致操作系統比memcached進程本身還慢。Slab Allocator就是為解決該問題而誕生的。Slab Allocator的基本原理是按照預先規定的大小,將分配的內存分割成特定長度的塊,以完全解決內存碎片問題.

今天(2012-03-16)我們重新測試了memcached ::set的數據大小。可能是我們用php的memcached擴展是最新版,set數據的時候是默認壓縮的。set 數據:

  1. $ac = new memcahed();
  2. $data = str_repeat('a', 1024* 1024); //1M的數據
  3. $r = $ac->set('key', $data, 9999);
  4. //或者
  5. $data = str_repeat('a', 1024* 1024*100);//100M的數據
  6. $r = $ac->set('key', $data, 9999);

 

 

 

不論是1M的數據還是100M的數據,都能set成功。后來我發現,memcachedset數據的時候是默認壓縮的。由于這個這個是重復的字符串,壓縮率高達1000倍。因此100M的數據壓縮后實際也就100k而已。

當我設置:

  1. $ac->setOption(memcahed::OPT_COMPRESSION,0); //不壓縮存儲數據。
  2. $data = str_repeat('a', 1024* 1024); //1M數據
  3. $r = $ac->set('key', $data, 9999);//1M的數據set不成功。

 

 

 

也就是說memcached server不能存儲超過1M的數據,但是經過客戶端壓縮數據后,只要小于1M的數據都能存儲成功。

memcached相關知識:

 

1、memcached的基本設置
1)啟動Memcache的服務器端

# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,
-u是運行Memcache的用戶,我這里是root,
-l是監聽的服務器IP地址,如果有多個地址的話,我這里指定了服務器的IP地址192.168.0.200,
-p是設置Memcache監聽的端口,我這里設置了12000,最好是1024以上的端口,
-c選項是最大運行的并發連接數,默認是1024,我這里設置了256,按照你服務器的負載量來設定,
-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid,

2)如果要結束Memcache進程,執行:

# kill `cat /tmp/memcached.pid`

哈希算法任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該

段落的一個字母,隨后的哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的。

 

2、適用memcached的業務場景?

1)如果網站包含了訪問量很大的動態網頁,因而數據庫的負載將會很高。由于大部分數據庫請求都是讀操作,那么memcached可以顯著地減小數據庫負載。

2)如果數據庫服務器的負載比較低但CPU使用率很高,這時可以緩存計算好的結果( computed objects )和渲染后的網頁模板(enderred templates)。

3)利用memcached可以緩存session數據、臨時數據以減少對他們的數據庫寫操作。

4)緩存一些很小但是被頻繁訪問的文件。

5)緩存Web 'services'(非IBM宣揚的Web Services,譯者注)或RSS feeds的結果.。

3、不適用memcached的業務場景?

 

1)緩存對象的大小大于1MB

Memcached本身就不是為了處理龐大的多媒體(large media)和巨大的二進制塊(streaming huge blobs)而設計的。

2)key的長度大于250字符

3)虛擬主機不讓運行memcached服務

如果應用本身托管在低端的虛擬私有服務器上,像vmware, xen這類虛擬化技術并不適合運行memcached。Memcached需要接管和控制大塊的內存,如果memcached管理 的內存被OS或 hypervisor交換出去,memcached的性能將大打折扣。

4)應用運行在不安全的環境中

Memcached為提供任何安全策略,僅僅通過telnet就可以訪問到memcached。如果應用運行在共享的系統上,需要著重考慮安全問題。

5)業務本身需要的是持久化數據或者說需要的應該是database

 

4、 不能能夠遍歷memcached中所有的item

這個操作的速度相對緩慢且阻塞其他的操作(這里的緩慢時相比memcached其他的命令)。memcached所有非調試(non-debug)命令,例如add, set, get, fulsh等無論

memcached中存儲了多少數據,它們的執行都只消耗常量時間。任何遍歷所有item的命令執行所消耗的時間,將隨著memcached中數據量的增加而增加。當其他命令因為等待(遍歷所有item的命令執行完畢)而不能得到執行,因而阻塞將發生。

5、 memcached能接受的key的最大長度是250個字符

memcached能接受的key的最大長度是250個字符。需要注意的是,250是memcached服務器端內部的限制。如果使用的Memcached客戶端支持"key的前綴"或類似特性,那么key(前綴+原始key)的最大長度是可以超過250個字符的。推薦使用較短的key,這樣可以節省內存和帶寬。

6、 單個item的大小被限制在1M byte之內

因為內存分配器的算法就是這樣的。

詳細的回答:

1)Memcached的內存存儲引擎,使用slabs來管理內存。內存被分成大小不等的slabs chunks(先分成大小相等的slabs,然后每個slab被分成大小相等chunks,不同slab的chunk大小是不相等的)。chunk的大小依次從一個最小數開始,按某個因子增長,直到達到最大的可能值。如果最小值為400B,最大值是1MB,因子是1.20,各個slab的chunk的大小依次是:

slab1 - 400B;slab2 - 480B;slab3 - 576B ...slab中chunk越大,它和前面的slab之間的間隙就越大。因此,最大值越大,內存利用率越低。Memcached必須為每個slab預先分配內存,因此如果設置了較小的因子和較大的最大值,會需要為Memcached提供更多的內存。

2)不要嘗試向memcached中存取很大的數據,例如把巨大的網頁放到mencached中。因為將大數據load和unpack到內存中需要花費很長的時間,從而導致系統的性能反而不好。如果確實需要存儲大于1MB的數據,可以修改slabs.c:POWER_BLOCK的值,然后重新編譯memcached;或者使用低效的malloc/free。另外,可以使用數據庫、MogileFS等方案代替Memcached系統。

7、 memcached的內存分配器是如何工作的?為什么不適用malloc/free!?為何要使用slabs?

實際上,這是一個編譯時選項。默認會使用內部的slab分配器,而且確實應該使用內建的slab分配器。最早的時候,memcached只使用malloc/free來管理內存。然而,這種方式不能與OS的內存管理以前很好地工作。反復地malloc/free造成了內存碎片,OS最終花費大量的時間去查找連續的內存塊來滿足malloc的請求,而不是運行memcached進程。slab分配器就是為了解決這個問題而生的。內存被分配并劃分成chunks,一直被重復使用。因為內存被劃分成大小不等的slabs,如果item的大小與被選擇存放它的slab不是很合適的話,就會浪費一些內存。

8、memcached對item的過期時間有什么限制?

item對象的過期時間最長可以達到30天。memcached把傳入的過期時間(時間段)解釋成時間點后,一旦到了這個時間點,memcached就把item置為失效狀態,這是一個簡單但obscure的機制。

9、什么是二進制協議,是否需要關注?

二進制協議嘗試為端提供一個更有效的、可靠的協議,減少客戶端/服務器端因處理協議而產生的CPU時間。根據Facebook的測試,解析ASCII協議是memcached中消耗CPU時間最多的

環節。

10、 memcached的內存分配器是如何工作的?為什么不適用malloc/free!?為何要使用slabs?

實際上,這是一個編譯時選項。默認會使用內部的slab分配器,而且確實應該使用內建的slab分配器。最早的時候,memcached只使用malloc/free來管理內存。然而,這種方式不能與OS的內存管理以前很好地工作。反復地malloc/free造成了內存碎片,OS最終花費大量的時間去查找連續的內存塊來滿足malloc的請求,而不是運行memcached進程。slab分配器就是為了解決這個問題而生的。內存被分配并劃分成chunks,一直被重復使用。因為內存被劃分成大小不等的slabs,如果item的大小與被選擇存放它的slab不是很合適的話,就會浪費一些內存。

11、memcached是原子的嗎?

所有的被發送到memcached的單個命令是完全原子的。如果您針對同一份數據同時發送了一個set命令和一個get命令,它們不會影響對方。它們將被串行化、先后執行。即使在多線程模式,所有的命令都是原子的。然是,命令序列不是原子的。如果首先通過get命令獲取了一個item,修改了它,然后再把它set回memcached,系統不保證這個item沒有被其他進程(process,未必是操作系統中的進程)操作過。memcached 1.2.5以及更高版本,提供了gets和cas命令,它們可以解決上面的問題。如果使用gets命令查詢某個key的item,memcached會返回該item當前值的唯一標識。如果客戶端程序覆寫了這個item并想把它寫回到memcached中,可以通過cas命令把那個唯一標識一起發送給memcached。如果該item存放在memcached中的唯一標識與您提供的一致,寫操作將會成功。如果另一個進程在這期間也修改了這個item,那么該item存放在memcached中的唯一標識將會改變,寫操作就會

失敗。

Windows下的Memcache安裝
1. 下載memcache的windows穩定版,解壓放某個盤下面,比如在c:/memcached
2. 在終端(也即cmd命令界面)下輸入 ‘c:/memcached/memcached.exe -d install’ 安裝
3. 再輸入: ‘c:/memcached/memcached.exe -d start’ 啟動。NOTE: 以后memcached將作為windows的一個服務每次開機時自動啟動。這樣服務器端已經安裝完畢了。 



/usr/local/memcached/bin/memcached -u root -d -m 3072 -l 192.168.121.130 -p 50008 -U 0 -P /var/run/memcache.pid

posted on 2012-10-19 17:20 C++技術中心 閱讀(1161) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎Windows 編程
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久有精品国产| 尤物在线观看一区| 玖玖视频精品| 久久嫩草精品久久久久| 久久久精品五月天| 久久婷婷综合激情| 欧美伦理91i| 国产精品久久久91| 国产视频观看一区| 亚洲成人资源网| 一区二区三区视频在线看| 亚洲欧美精品| 免费精品视频| 亚洲午夜国产成人av电影男同| 亚洲男人的天堂在线aⅴ视频| 久久精品91久久香蕉加勒比| 免费久久99精品国产自在现线 | 久久精品99| 欧美~级网站不卡| 欧美日韩国产大片| 国产午夜精品一区二区三区欧美 | 免费试看一区| 一本色道久久精品| 久久久久亚洲综合| 国产精品成人观看视频国产奇米| 国产一区二区三区高清| 日韩视频在线播放| 久久久蜜桃精品 | 欧美福利专区| 国产精品网站在线观看| 亚洲国产精品一区制服丝袜| 久久综合久久久久88| 欧美性淫爽ww久久久久无| 狠狠久久五月精品中文字幕| av成人手机在线| 久久永久免费| 午夜一级在线看亚洲| 欧美日韩亚洲一区二区| 亚洲国产精品久久人人爱蜜臀 | 羞羞漫画18久久大片| 欧美高清在线视频观看不卡| 亚洲午夜未删减在线观看| 欧美不卡在线视频| 一区二区亚洲精品国产| 欧美在线播放一区| 亚洲视频免费| 欧美日韩综合在线| 亚洲欧洲精品一区二区| 欧美在线观看视频| 亚洲五月六月| 国产精品久久综合| 正在播放亚洲一区| 日韩午夜在线| 欧美日韩成人一区二区| 在线观看欧美视频| 久热爱精品视频线路一| 欧美在线日韩精品| 国产一区二区三区高清播放| 亚洲尤物在线视频观看| 一区二区三区三区在线| 国产精品福利在线| 亚洲综合欧美| 亚洲在线黄色| 国产精品美女一区二区在线观看| 亚洲一区不卡| 亚洲一区综合| 国产美女一区二区| 欧美一区三区三区高中清蜜桃| 亚洲一区二区伦理| 国产午夜一区二区三区| 久久免费99精品久久久久久| 久久久精品999| 亚洲国产天堂久久综合网| 欧美国产免费| 欧美极品一区| 性刺激综合网| 久久精品国产91精品亚洲| 亚洲电影下载| 亚洲精品黄网在线观看| 欧美日韩成人在线观看| 亚洲一区三区电影在线观看| 亚洲免费视频一区二区| 狠狠色噜噜狠狠色综合久| 欧美成人免费播放| 欧美激情精品久久久久久黑人 | 久久国产88| 男男成人高潮片免费网站| 欧美激情精品久久久久久变态| 老色批av在线精品| 99re66热这里只有精品3直播| 亚洲精品社区| 国产欧美日本在线| 欧美顶级大胆免费视频| 欧美日韩成人综合| 久久精品在线免费观看| 91久久黄色| 亚洲电影在线播放| 欧美福利精品| 亚洲少妇在线| 欧美一区二区免费| 亚洲精品你懂的| 亚洲伊人网站| 91久久精品日日躁夜夜躁欧美| 99国产精品99久久久久久粉嫩| 国内精品久久久久久 | 一区二区免费在线播放| 国产精品入口日韩视频大尺度| 久久免费视频在线观看| 欧美日韩高清不卡| 久久综合九色综合久99| 欧美日韩在线另类| 久久综合中文| 国产区欧美区日韩区| 亚洲精品之草原avav久久| 韩国一区电影| 亚洲欧美在线另类| 亚洲天堂久久| 欧美日产一区二区三区在线观看 | 亚洲视频一区在线观看| 久久久久在线观看| 久久av老司机精品网站导航| 欧美久久久久| 免费亚洲电影在线| 国产一区二区中文字幕免费看| 一区二区欧美在线观看| 91久久国产综合久久| 亚洲欧美日韩国产另类专区| aa级大片欧美三级| 欧美激情精品久久久久久| 蜜桃av综合| 在线成人免费观看| 欧美一区2区三区4区公司二百| 销魂美女一区二区三区视频在线| 欧美全黄视频| 99成人精品| 亚洲一区在线免费观看| 国产精品h在线观看| 日韩午夜精品| 亚洲欧美日韩第一区| 国产精品九九久久久久久久| 日韩手机在线导航| 亚洲午夜一区二区| 国产精品午夜视频| 欧美一区深夜视频| 免费久久99精品国产| 一区二区三区四区在线| 亚洲影院在线观看| 性欧美videos另类喷潮| 欧美小视频在线观看| 亚洲最新视频在线| 亚洲在线观看视频网站| 国产精品嫩草影院一区二区| 亚洲一区二区三区高清| 欧美与黑人午夜性猛交久久久| 国产主播在线一区| 免费中文日韩| 亚洲精品一区二区三区婷婷月| 99这里只有精品| 国产精品一级在线| 久久一二三四| 99精品欧美| 久久精品免费电影| 亚洲国产欧美一区二区三区久久| 欧美黄色网络| 亚洲综合日本| 欧美高清视频在线播放| 亚洲一区二区三区四区在线观看 | 夜夜爽av福利精品导航| 欧美色区777第一页| 午夜激情亚洲| 亚洲福利专区| 欧美一级黄色录像| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩一区在线视频| 欧美一级片一区| 亚洲精品国产精品国产自| 久久av一区二区三区漫画| 亚洲精品网站在线播放gif| 国产精品v欧美精品v日韩 | 国产精品久久久久99| 久久久久久一区二区| 一区二区三区高清视频在线观看 | 欧美成人有码| 小辣椒精品导航| 亚洲精品久久嫩草网站秘色| 国产精品视频精品| 欧美96在线丨欧| 欧美一区二区精品| 一本久久精品一区二区| 欧美大成色www永久网站婷| 亚洲欧美一区二区三区极速播放| 亚洲高清不卡在线观看| 国产精品久久久久久久久久免费 | 亚洲欧美一级二级三级| 亚洲国产精品成人| 国产欧美欧美| 欧美亚州在线观看| 欧美人与性动交cc0o| 久久亚洲视频| 欧美在线你懂的|