簡介
介紹
這里簡單介紹一下,memcached 是高效、快速的分布式內存對象緩存系統,主要用于加速 WEB 動態應用程序。
啟動
/usr/bin/memcached -d -m 128 -l 127.0.0.1 -p 11211 -u httpd
守護進程啟動 大小128m 監聽的ip是本機的 11211端口 所有者是httpd
工作原理
首先 memcached 是以守護程序方式運行于一個或多個服務器中,隨時接受客戶端的連接操作,客戶端可以由各種語言編寫,
目前已知的客戶端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客戶端在與 memcached 服務建立連接之后,
接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,
保存到 memcached 中的對象實際上是放置內存中的,并不是保存在 cache 文件中的,這也是為什么 memcached 能夠如此高效快速的原因。注意,這些對象并不是持久的,服務停止之后,里邊的數據就會丟失。
和memcache的區別
memcached從memcahce發展而來 ,提供了跟豐富的內存操作方法,性能有了很大的提升
可用工具
MemAdmin是一款可視化的Memcached管理與監控工具,基于 PHP5 & JQuery 開發,體積小,操作簡單。
主要功能:
服務器參數監控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新
服務器性能監控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實時監控
支持數據遍歷,方便對存儲內容進行監視
支持條件查詢,篩選出滿足條件的KEY或VALUE
數組、JSON等序列化字符反序列顯示
兼容memcache協議的其他服務,如Tokyo Tyrant (遍歷功能除外)
支持服務器連接池,多服務器管理切換方便簡潔
下載地址:[http://www.junopen.com/memadmin](http://www.junopen.com/memadmin/)
在線地址:[http://www.xzjtcm.cn/index.php?action=set.con](http://www.xzjtcm.cn/index.php?action=set.con)
測試相關
簡介
memcached 是一款高性能的存儲方式,一般用作減少數據庫的負載
基礎知識
命中率:get的數量/set的數量 ×100%
為什么命中率不會是100%?
memcached是key-values 的方式存儲,根據最少使用和有效時間來注銷的,所以get的會有失敗的
存儲的單位:
塊-頁-區 ,他們是一對多的關系
memcached的存儲數據的方式
協議簡單:memcached的服務器客戶端通信并不使用復雜的MXL等格式,而是使用簡單的基于文本的協議。
基于libevent的事件處理:libevent是個程序庫,他將Linux 的epoll、BSD類操作系統的kqueue等時間處理功能封裝成統一的接口。memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等操作系統上發揮其高性能。
內置內存存儲方式:為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由于數據僅存在于內存中,因此重啟 memcached,重啟操作系統會導致全部數據消失。另外,內容容量達到指定的值之后memcached回自動刪除不適用的緩存。
Memcached不互通信的分布式:memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。各個memcached不會互相通信以共享信息。他的分布式主要是通過客戶端實現的。
工作方式
c/s的工作方式,他們可以一對一,也可以一對多,也可以多對多
測試工具
memadmin,圖形化的memcached監控工具(使用方法百度就有)
總結的測試點
1.使用了memcached后要關注命中率,和內存使用
2.要關注key-values的set和get是否成功,注意key不能重復
3.對于分布式的memcached 增加和減少要測試客戶端使用的存儲方式的規則
存儲規則決定了數據set和get的存數據和取數據的地址,比如簡單協議,set數據的時候會對serverlist求余數然后哈希運算key值,如果你增加或者減少server
會出現get 以前的key值取不到現象。
參考:
http://www.cnblogs.com/dinglang/archive/2011/11/27/2265178.html
4.要關 塊-頁-區的數據分配是否合理。這個合理的意思是比如200個塊
其中前100個都被命中,后面的基本不命中 這個就是不對的
5.關注能存的使用情況 。因為一旦內存使用查過90%那么memcahed會去計算使用頻率低的key-values 釋放掉
登錄方式
telnet ip port(11211)