memcached啟動時,有很多配置引數可以選擇,這些配置引數嚴重影響著memcached的使用,下面分析下這些引數的意義,開源軟體版本之間差異比較大,我這次分析是基於1.4.15進行分析的,大家學習時記得核對版本。
[cpp]view plain
copy
"a:"
//unix socket的許可權位資訊,unix socket的許可權位資訊和普通檔案的許可權位資訊一樣
"p:"
//memcached監聽的tcp埠值,預設是11211
"s:"
//unix socket監聽的socket檔案路徑
"u:"
//memcached監聽的udp埠值,預設是11211
"m:"
//memcached使用的最大記憶體值,預設是64m
"m"//當memcached的記憶體使用完時,不進行lru淘汰資料,直接返回錯誤,該選項就是關閉lru
"c:"
//memcached的最大連線數,如果不指定,按系統的最大值進行
"k"//是否鎖定memcached所持有的記憶體,如果鎖定了記憶體,其他業務持有的記憶體就會減小
"hi"
//幫助資訊
"r"//core檔案的大小,如果不指定,按系統的最大值進行
"v"//除錯資訊
"d"//設定以daemon方式執行
"l:"
//繫結的ip資訊,如果伺服器有多個ip,可以在多個ip上面啟動多個memcached例項,注意:這個不是可接收的ip位址
"u:"
//memcached執行的使用者,如果以root啟動,需要指定使用者,否則程式錯誤,退出。
"p:"
//memcached以daemon方式執行時,儲存pid的檔案路徑資訊
"f:"
//記憶體的擴容因子,這個關係到memcached內部初始化空間時的乙個變化,後面詳細說明
"n:"
//chunk的最小大小(byte),後續的增長都是該值*factor來進行增長的
"t:"
//內部worker執行緒的個數,預設是4個,最大值推薦不超過64個
"d:"
//內部資料儲存時的分割符
"l"//指定記憶體頁的大小,預設記憶體頁大小為4k,頁最大不超過2m,調大頁的大小,可有效減小頁表的大小,提高記憶體訪問的效率
"r:"
//單個worker的最大請求個數
"c"//禁用業務的cas,即compare and set
"b:"
//listen操作快取連線個數
"b:"
//memcached內部使用的協議,支援二進位制協議和文字協議,早期只有文字協議,二進位制協議是後續加上的
"i:"
//單個item的最大值,預設是1m,可以修改,修改的最小值為1k,最大值不能超過128m
"s"//開啟sasl安全協議
"o:"
//有四個引數項可以設定:
maxconns_fast(如果連線數超過最大連線數,立即關閉新的連線)
hashpower(hash表的大小的指數值,是按1
slab_automove(是否自動移動各個slab,如果該選項開啟,會有專門的執行緒來進行slab的調整)
memcached內部是通過settings來抽象上面的這些初始化引數。
[cpp]view plain
copy
struct
settings ;
改結構的初始化:
[cpp]view plain
copy
static
void
settings_init(
void
)
這些值都是一些預設值,後續按啟動時所指定的進行修改,比如對監聽埠號的修改:
[cpp]view plain
copy
case
'a':
//修改unix socket的許可權位資訊
settings.access = strtol(optarg, null, 8);
break
; case
'u':
//udp埠資訊
settings.u***ort = atoi(optarg);
udp_specified = true
; break
; case
'p':
//tcp埠資訊
settings.port = atoi(optarg);
tcp_specified = true
; break
;
Memcached原始碼閱讀之伺服器資源調整
本篇部落格作為memcached原始碼分析的開篇,這次閱讀的原始碼版本為 1.4.15,開源軟體各個版本之間差異比較大,同學們學習時,記得核對版本。memcached的main函式位於memcached.c檔案中,從main函式啟動之後,會初始化一些資源和申請一些伺服器資源,如下面所示 1 core...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...
原始碼閱讀 Glide原始碼閱讀之load方法(二)
原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...