將memcache伺服器安裝包解壓到C:\memcached檔案夾後,使用cmd命令視窗安裝。
1>開始>運行:CMD(確定)
2>cd C:\memcached(斷行符號)
3>memcached -d install(斷行符號 這步執行安裝)
4>memcached -d start(斷行符號 這步執行啟動memcache伺服器,預設分配64M記憶體,使用11211連接埠)
此時memcache伺服器已經可以正常使用了。
在服務端運行:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
這將會啟動一個佔用2G記憶體的進程,並開啟11211連接埠用於接收請求。由於32位系統只能處理4G記憶體的定址,所以在大於4G記憶體使用量PAE的32位伺服器上可以運行2-3個進程,並在不同連接埠進行監聽。
又如:memcached -d -m 10 -u root -l 192.168.105.73 -p 12000 -c 256 -P /tmp/memcached.pid
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的記憶體數量,單位是MB,我這裡是10MB,
-u是運行Memcache的使用者,我這裡是root,
-l是監聽的伺服器IP地址,如果有多個地址的話,我這裡指定了伺服器的IP地址192.168.105.73 ,
-p是設定Memcache監聽的連接埠,我這裡設定了12000,最好是1024以上的連接埠,
-c選項是最大啟動並執行並發串連數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定,
-P是設定儲存Memcache的pid檔案,我這裡是儲存在 /tmp/memcached.pid
memcache伺服器安全:
Memcache伺服器端都是直接通過用戶端串連後直接操作,沒有任何的驗證過程,這樣如果伺服器是直接暴露在互連網上的話是比較危險,輕則資料泄露被其他無關人員查看,重則伺服器被入侵,況且裡面可能存在一些我們未知的bug或者是緩衝區溢位的情況,這些都是我們未知的,所以危險性是可以預見的。為了安全起見,做兩點建議,能夠稍微的防止駭客的入侵或者資料的泄露。
現在就關於修改memcache伺服器配置的問題說明如下:
1>用內網ip的方式提供web應用伺服器調用,不允許直接通過外網調用,如將memcache伺服器放在192.168.1.55的伺服器上
2>修改連接埠,如改為11200
3>分配記憶體,如分配1024M(1G記憶體)
方法如下:
1>開始>運行:CMD(確定)
2>cd C:\memcached(斷行符號)
3>memcached -m 1024 -p 11200 -l 192.168.1.55(斷行符號)
注意,此時命令列不會回到C:\memcached>狀態,並且實際上memcache伺服器悄悄變為stop狀態了。此視窗不可以關閉。新開一個cmd視窗
4>開始>運行:CMD(確定)
5>cd C:\memcached(斷行符號)
6>memcached -d start(斷行符號)可以關閉此cmd視窗。
此時可以使用新配置的memcache伺服器了。
上述方法雖然解決了修改預設配置的問題,但是始終會有一個cmd視窗不可以關閉,否則就回到11211連接埠的預設配置。
更好的解決方案是通過修改服務的註冊表配置:
1>開始>運行:regedit(斷行符號)
2>在註冊表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
3>預設的ImagePath鍵的值是:"c:\memcached\memcached.exe" -d runservice,改為:"c:\memcached\memcached.exe" -d runservice -m 512 -p 11200 -l 192.168.1.55(確定,關閉註冊表)
4>我的電腦(右鍵)>管理>服務 找到memcache的服務,重新啟動一次即可生效。
此時,同網段內的電腦仍然可以利用這台memcache伺服器,我們限定指定的web應用伺服器才能夠使用,通過防火牆的方式。如只允許192.168.1.2這台Web伺服器對Memcache伺服器的訪問,能夠有效阻止一些非法訪問,相應的也可以增加一些其他的規則來加強安全性,這個可以根據自己的需要來做。
Memcache伺服器端都是直接通過用戶端串連後直接操作,沒有任何的驗證過程,這樣如果伺服器是直接暴露在互連網上的話是比較危險,輕則資料泄露被其他無關人員查看,重則伺服器被入侵,因為Mecache是以root許可權啟動並執行,況且裡面可能存在一些我們未知的bug或者是緩衝區溢位的情況,這些都是我們未知的,所以危險性是可以預見的。為了安全起見,我做兩點建議,能夠稍微的防止駭客的入侵或者資料的泄露。
內網訪問
最好把兩台伺服器之間的訪問是內網形態的,一般是Web伺服器跟Memcache伺服器之間。普遍的伺服器都是有兩塊網卡,一塊指向互連網,一塊指向內網,那麼就讓Web伺服器通過內網的網卡來訪問Memcache伺服器,我們Memcache的伺服器上啟動的時候就監聽內網的IP地址和連接埠,內網間的訪問能夠有效阻止其他非法的訪問。
# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid
Memcache伺服器端設定監聽通過內網的192.168.0.200的ip的11211連接埠,佔用1024MB記憶體,並且允許最大1024個並發串連
設定防火牆
防火牆是簡單有效方式,如果卻是兩台伺服器都是掛在網的,並且需要通過外網IP來訪問Memcache的話,那麼可以考慮使用防火牆或者代理程式來過濾非法訪問。
一般我們在Linux下可以使用iptables或者FreeBSD下的ipfw來指定一些規則防止一些非法的訪問,比如我們可以設定只允許我們的Web伺服器來訪問我們Memcache伺服器,同時阻止其他的訪問。
# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11211 -j ACCEPT
上面的iptables規則就是只允許192.168.0.2這台Web伺服器對Memcache伺服器的訪問,能夠有效阻止一些非法訪問,相應的也可以增加一些其他的規則來加強安全性,這個可以根據自己的需要來做
很多時候需要監控伺服器上的Memcached運行情況,比如緩衝的查詢次數,命中率之類的。但找到的
那個memcached-tool是linux下用perl寫的,我也沒試過windows能不能用。後來發現個簡單的辦法可以做到,就是使用Telnet。
1、windows系統串連memcached連接埠 cmd命令列中鍵入telnet 192.168.1.1 11211 11211是memcached綁定的連接埠號碼。
2、串連上連接埠後輸入 stats命令,即可得到描述Memcached伺服器運行情況的參數。
STAT pid 4356 伺服器處理序ID
STAT uptime 56625 伺服器已耗用時間,單位秒
STAT time 1225249079 伺服器當前的UNIX時間
STAT version 1.1.0 伺服器的版本號碼
STAT pointer_size 64
STAT rusage_user 151.845489 該進程累計的使用者時間(秒:微妙)
STAT rusage_system 121.667603 該進程累計的系統時間(秒:微妙)
STAT ibuffer_size 4096
STAT curr_connections 13 串連數量
STAT total_connections 54136 伺服器運行以來接受的串連總數
STAT connection_structures 318 伺服器分配的串連結構的數量
STAT cmd_get 100595 取回請求總數
STAT cmd_set 6510 儲存請求總數
STAT get_hits 96543 請求成功的總次數
STAT get_misses 4052 請求失敗的總次數
STAT bytes_read 4427679 伺服器從網路讀取到的總位元組數
STAT bytes_written 6585596 伺服器向網路發送的總位元組數
1>、uptime 是memcached啟動並執行秒數,
2>、cmd_get是查詢快取的次數。
3>、這兩個資料相除一下就能得到平均每秒請求緩衝的次數——最近niupu的流量很低,所以平均也就一秒請求一次多,
這麼點大的壓力,用檔案系統快取一樣沒問題,根本不會體現出使用memcached的優越。
4>、下面的cmd_set 就是設定key=>value的次數。整個memcached是個大hash,用cmd_get沒有找到的內
容,就會調用一下cmd_set寫進緩衝裡。
5>、緊跟著是get_hits,就是快取命中的次數。快取命中率 = get_hits/cmd_get * 100%。
6>、下面的get_misses的數字加上get_hits應該等於cmd_get。
7>、而total_itemscurr_items表示現在在緩衝中的索引值對個數.
8>、在圖上total_items == cmd_set == get_misses,不過當可用最大記憶體用光時,memcached就會刪掉一些內容,上面的等式就不成立了