私のmemcachedサーバの統計情報は、奇妙な関係を示しています:total_itemsはcmd_setより小さいです。このサーバー上で実行される唯一の操作は、「追加」、「置換」、「削除」、CASベースの操作など、「設定」と「取得」です。memcached statistics total_itemsはcmd_setより小さい
memcachedソースコードを調べると、「通常の」セット(CASなし)がアイテムを置き換えたり書き込んだりして、どちらもtotal_itemsを増やすことがわかります。
do_store_item() {
// ...
if (old_it != NULL)
item_replace(old_it, it, hv);
else
do_item_link(it, hv);
// ...
}
do_item_link())TOTAL_ITEMSを増加させ、item_replace()も(do_item_link呼び出します。では、total_itemsはどのようにcmd_setよりも小さくなりますか? memcachedの統計情報(読みやすくするためにインデント番号)から
抜粋:彼らは間違っているので
STAT cmd_set 12827359728
STAT total_items 4237422053
STAT curr_items 60745375
STAT expired_unfetched 9898430934
STAT evicted_unfetched 30415090
STAT evictions 30421532
STAT reclaimed 9900995350
回答がありません。私と同じくらい全員が似ているように見える。したがって、私はmemcachedバグを開いた:https://github.com/memcached/memcached/issues/161 –