1. 程式人生 > >memcached 最大連線數及其記憶體大小的設定

memcached 最大連線數及其記憶體大小的設定

 

2011年11月30日 11:21:26 小狼_百度 閱讀數:9641

 memcached的基本設定:
 

-p 監聽的埠
-l 連線的IP地址, 預設是本機
-d start 啟動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在執行的memcached服務
-d install 安裝memcached服務
-d uninstall 解除安裝memcached服務
-u 以的身份執行 (僅在以root執行的時候有效)
-m 最大記憶體使用,單位MB。預設64MB
-M 記憶體耗盡時返回錯誤,而不是刪除項
-c 最大同時連線數,預設是1024
-f 塊大小增長因子,預設是1.25
-n 最小分配空間,key+value+flags預設是48
-h 顯示幫助

mixi的設定,單臺:

[/code]
每臺memcached伺服器僅啟動一個memcached程序。分配給memcached的記憶體為3GB,啟動引數如下:
 

/usr/bin/memcached -p 11211 -u nobody -m 3000 -c 30720

由於使用了x86_64的作業系統,因此能分配2GB以上的記憶體。32位作業系統中,每個程序最多隻能使用2GB記憶體。也曾經考慮過啟動多個分配2GB以下記憶體的程序,但這樣一臺伺服器上的TCP連線數就會成倍增加,管理上也變得複雜,所以mixi就統一使用了64位作業系統。

另外,雖然伺服器的記憶體為4GB,卻僅分配了3GB,是因為記憶體分配量超過這個值,就有可能導致記憶體交換(swap)。連載的第2次中前阪講解過了memcached的記憶體儲存“slab allocator”,當時說過,memcached啟動時指定的記憶體分配量是memcached用於儲存資料的量,沒有包括“slab allocator”本身佔用的記憶體、以及為了儲存資料而設定的管理空間。因此,memcached程序的實際記憶體分配量要比指定的容量要大,這一點應當注意。

mixi儲存在memcached中的資料大部分都比較小。這樣,程序的大小要比指定的容量大很多。因此,我們反覆改變記憶體分配量進行驗證,確認了3GB的大小不會引發swap,這就是現在應用的數值。

 

memcached -d -m 1024 -u root -l 172.25.38.70 -p 12000 -c 4096 -P /tmp/memcached.pid   12000
-p 12000 埠
-m 1024  記憶體設定 1024
-c 4096  同時連線數