国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

memcached工作原理與優(yōu)化建議

2019-11-08 20:29:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

轉(zhuǎn)載:https://my.oschina.net/liuxd/blog/63129

工作原理

    基本概念:slab,page,chunk。

    slab,是一個(gè)邏輯概念。它是在啟動(dòng)memcached實(shí)例的時(shí)候預(yù)處理好的,每個(gè)slab對(duì)應(yīng)一個(gè)chunk size,也就是說(shuō)不同slab有不同的chunk size。具體分配多少個(gè)slab由參數(shù) -f (增長(zhǎng)因子)和 -n (chunk最小尺寸)決定的。

    page,可以理解為內(nèi)存頁(yè)。大小固定為1m。slab會(huì)在存儲(chǔ)請(qǐng)求時(shí)向系統(tǒng)申請(qǐng)page,并將page按chunk size進(jìn)行切割。

    chunk,是保存用戶數(shù)據(jù)的最小單位。用戶數(shù)據(jù)item(包括key,value)最終會(huì)保存到chunk內(nèi)。chunk規(guī)格是固定的,如果用戶數(shù)據(jù)放進(jìn)來(lái)后還有剩余則這剩余部分不能做其他用途。

     工作流程:memcahed實(shí)例啟動(dòng),根據(jù) -f 和 -n 進(jìn)行預(yù)分配slab。以 -n 為最小值開(kāi)始,以 -f 為比值生成等比數(shù)列,直到1m為止(每個(gè)slab的chunk size都要按8的倍數(shù)進(jìn)行補(bǔ)全,比如:如果按比值算是556的話,會(huì)再加4到560成為8的整倍數(shù))。然后每個(gè)slab分配一個(gè)page。當(dāng)用戶發(fā)來(lái)存儲(chǔ)請(qǐng)求時(shí)(key,value),memcached會(huì)計(jì)算key+value的大小,看看屬于哪個(gè)slab。確定slab后看里面的是否有空閑chunk放key+value,如果不夠就再向系統(tǒng)申請(qǐng)一個(gè)page(如果此時(shí)已經(jīng)達(dá)到 -m 參數(shù)設(shè)置的內(nèi)存使用上限,則看是否設(shè)置了 -M 。如果設(shè)置了 -M 則返回錯(cuò)誤提示,否則按LRU算法刪除數(shù)據(jù))。申請(qǐng)后將該page按本slab的chunk size 進(jìn)行切割,然后分配一個(gè)來(lái)存放用戶數(shù)據(jù)。

    注意:

    1,chunk是在page里面劃分的,而page固定為1m,所以chunk最大不能超過(guò)1m。

    2,chunk實(shí)際占用內(nèi)存要加48B,因?yàn)閏hunk數(shù)據(jù)結(jié)構(gòu)本身需要占用48B。

    3,如果用戶數(shù)據(jù)大于1m,則memcached會(huì)將其切割,放到多個(gè)chunk內(nèi)。

    4,已分配出去的page不能回收。

優(yōu)化建議

1,-n 參數(shù)的設(shè)置,注意將此參數(shù)設(shè)置為1024可以整除的數(shù)(還要考慮48B的差值),否則余下來(lái)的部分就浪費(fèi)了。

2,不要存儲(chǔ)超過(guò)1m的數(shù)據(jù)。因?yàn)橐鸪啥鄠€(gè)chunk,計(jì)算和時(shí)間成本都成倍增加。

3,善用stats命令查看memcached狀態(tài)。

4,消滅eviction(被刪除的數(shù)據(jù))。造成eviction是因?yàn)閮?nèi)存不夠,有三個(gè)思路:一是在CPU有余力的情況下開(kāi)啟壓縮(php擴(kuò)展);二是增加內(nèi)存;三是調(diào)整 -f 參數(shù),減少內(nèi)存浪費(fèi)。

5,調(diào)整業(yè)務(wù)代碼,提高命中率。

6,緩存小數(shù)據(jù)。省帶寬,省網(wǎng)絡(luò)I/O時(shí)間,省內(nèi)存。

7,根據(jù)業(yè)務(wù)特點(diǎn),為數(shù)據(jù)尺寸區(qū)間小的業(yè)務(wù)分配專用的memcached實(shí)例。這樣可以調(diào)小 -f 參數(shù),使數(shù)據(jù)集中存在少數(shù)幾個(gè)slab上,內(nèi)存浪費(fèi)較少。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉峪关市| 定西市| 静乐县| 新营市| 扎赉特旗| 报价| 平罗县| 稻城县| 天长市| 南郑县| 临海市| 普定县| 区。| 平乡县| 德保县| 北海市| 宜兰市| 军事| 明溪县| 浦县| 曲阜市| 清新县| 广元市| 雅安市| 乐昌市| 新宁县| 象山县| 通州市| 洛隆县| 四川省| 读书| 吉安市| 正安县| 安泽县| 常山县| 敦化市| 阿鲁科尔沁旗| 军事| 商河县| 澎湖县| 东山县|