1
2
3
4
define(『admin_username』,'admin』);
define(『admin_password』,'admin』);
$memcache_servers
= 』127.0.0.1:11211′;
$memcache_servers
= 』127.0.0.1:11212′;
//可以多個監控
效果圖如下
問題出現了
發現命中率 以每天0.5%的速度下降 從原來的97%下降到了94%。
misses 的個數增長飛快。
從監控的variables看出,幾乎所有的items都集中在slab2裡,有將近8737個item。
那麼問題肯定出現在slab2所快取的資料上面。
開始查詢問題~
在linux下執行 memcached-tool 127.0.0.1:11211
slabid chunk的大小 生命週期 page數量 快取項個數 是否已滿 被登出數?
看來slab 2 類的 page 資料儲存已滿 ,但page的個數並沒有增加,count已達到8738.
memcache守護程序為
memcached -d -m 10 -u root -p 11211
分配的記憶體只有10m , chunk的size 的倍數因子 -f 為預設的1.25
1
2
3
4
5
6
7
8
9
10
[root@]
# memcached -u root -vv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 120 perslab 8738
slab class 3: chunk size 152 perslab 6898
slab class 4: chunk size 192 perslab 5461
slab class 5: chunk size 240 perslab 4369
slab class 6: chunk size 304 perslab 3449
slab class 7: chunk size 384 perslab 2730
slab class 8: chunk size 480 perslab 2184
...
10m的記憶體分給了過多的 slab,導致每個slab的pages 最多只能有1個,無法增加pages。
slab2的 count 已經達到了所能容納的最高值8738。不斷的有快取資料被evicted。
解決問題
新開乙個memcache守護程序
memcached -d -m 10 -f 2 -u root -p 11212
在專案**中將所有使用memcache 11211 slab2 的快取資料 介面位址改為 11212
1
2
3
[root@ ~]
# /home/duyumi/memcached-tool 127.0.0.1:11212
# item_size max_age pages count full? evicted evict_time oom
2 192b 5190s 2 8001 no 0 0 0
pages數增加為2,count達到了8001,並沒有full,乙個page的最大chunk為5461,每個chunk的大小為192b
1
2
3
4
5
[root@ ~]
# memcached -u root -f 2 -vv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 192 perslab 5461
slab class 3: chunk size 384 perslab 2730
....
快取項並沒有被evicted。
ok,問題解決了
提高快取命中率
原因是快取不存在或者快取已過期 通過redis提供的info命令檢視引數 命令 127.0.0.1 info輸出 expired keys 2061008 evicted keys 0 keyspace hits 19528495 keyspace misses 2915371計算公式 命中率 擊中...
如何提高快取命中率
命中 可以直接通過快取獲取到需要的資料。不命中 無法直接通過快取獲取到想要的資料,需要再次查詢資料庫或者執行其它的操作。原因可能是由於快取中根本不存在,或者快取已經過期。通常來講,快取的命中率越高則表示使用快取的收益越高,應用的效能越好 響應時間越短 吞吐量越高 抗併發的能力越強。由此可見,在高併發...
快取命中率
安裝 docker redis 查詢乙個不存在的key 127.0.0.1 6379 get test nil 在看命中率 新插入乙個值 name 127.0.0.1 6379 set name jackma ok查詢name 127.0.0.1 6379 get name jackma 再看命中率...