CentOS 5.5下安裝memcache
在一般情況下,CentOS已經默認安裝了libevent的二進制庫,但是沒有安裝相應的開發所用的頭文件。
所以,你可以使用如下命令來安裝:
yum install libevent-devel
接着可以去http://memcached.org/下載最新的memcached發佈版本。
解壓縮:
tar -xzvf memcached-1.4.4.tar.gz
配置:
cd memcached-1.4.4
./configure –with-libevent=/usr/
備註:如果 libevent 不是安裝在 /usr 目錄下,那麼需要把 libevent-1.4a.so.1
編譯:
make
安裝:
make install
啓動:
memcached -l 127.0.0.1 -d -p 11211 -u nobody -m 1024
上面的命令中-d表示用 daemon 的方式啓動 memcached,-l和-p組合表示監聽在 192.168.10.60 的 11211 端口上(如果不用-p指定端口號,則memcached將運行在11211端口上),-u表示運行用戶爲 nobody,-m表示爲其分配1024MB 的內存。
測試:
可以使用telnet連接到192.168.10.60的11211端口,連接成功以後,
先向memcached中添加一個key-value對,key爲test1(後面的0 0 10所表示的具體含義,在下一篇文章中會詳細介紹),value爲testing001:
set test1 0 0 10
testing001
STORED
再從memcached中取回key爲test1所對應的value:
get test1
VALUE test1 0 10
testing001
END
注:上面粗體表示系統輸出的內容
如果能看到類似的輸出,則證明memcached已經正確配置並啓動成功了。
安裝php-memcache擴展
下載:http://pecl.php.net/get/memcache-2.2.4.tgz
#解壓安裝
$ tar -zxvf memcache-2.2.4.tgz
$ cd memcache-2.2.4
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
$ make
$ make test
$ mkdir /usr/local/php/extensions/
$ cp modules/memcache.so /usr/local/php/extensions/
#在php.ini中加入擴展
[vi /usr/local/lib/php.ini]
extension_dir = "/usr/local/php/extensions/"
extension
重新啓動apache即可
5. 測試
- <?php
-
$mc = new Memcache; -
$mc->connect("127.0.0.1",11211); -
$item = $mc->get('item'); -
if(!is_array($item)){ -
echo "Add item to memcache"; -
$mc->add('item',array('item')); -
} -
$item = $mc->get('item'); -
var_dump($item); - ?>
啓動
memcached -d -m 10 -u root -l 202.207.177.177 -p 11211 -c 256 -P /tmp/memcached.pid |
參數說明
- -d選項是啓動一個守護進程,
- -m是分配給Memcache使用的內存數量,單位是MB,我這裏是10MB,
- -u是運行Memcache的用戶,我這裏是root,
- -l是監聽的服務器IP地址,如果有多個地址的話,我這裏指定了服務器的IP地址202.207.177.177,
- -p是設置Memcache監聽的端口,我這裏設置了11211,最好是1024以上的端口,
- -c選項是最大運行的併發連接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定,
- -P是設置保存Memcache的pid文件,我這裏是保存在 /tmp/memcached.pid,
★查看狀態
pid memcache服務器的進程ID uptime服務器已經運行的秒數 time 服務器當前的unix時間戳 version memcache 版本 pointer_size 當前操作系統的指針大小(32位系統一般是32bit) rusage_user 進程的累計用戶時間 rusage_system 進程的累計系統時間 curr_items 服務器當前存儲的items數量 total_items 從服務器啓動以後存儲的items總數量 bytes 當前服務器存儲items佔用的字節數 curr_connections 當前打開着的連接數 total_connections 從服務器啓動以後曾經打開過的連接數 connection_structures 服務器分配的連接構造數 cmd_get get命令(獲取)總請求次數 cmd_set set命令(保存)總請求次數 get_hits 總命中次數 get_misses 總未命中次數 evictions 爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後需要刪除舊的items來得到空間分配給新的items) bytes_read 總讀取字節數(請求字節數) bytes_written 總髮送字節數(結果字節數) limit_maxbytes 分配給memcache的內存大小(字節) threads 當前線程數 |
★關閉服務
kill `cat /tmp/memcached.pid` |
★監控服務
1.利用本附件的memadmin-1.0.12.tar.gz來監控
2.利用nagios監控
安裝插件後定義命名在vi commands.cfg,加入
define command { command_name check_memcached command_line $USER1$/check_memcached -H $HOSTADDRESS$:$ARG1$ --size-warning 92 --size-critical 95 } |
添加對memcache監控
define service{ use generic-service; Name of service template to use host_name waptx-5-111.waptx.com service_description check_memcached_32004 servicegroups Memcached check_command check_memcached!32004 } |
memcache客戶端
各種memcache客戶端API
http://code.google.com/p/memcached/wiki/Clients
總結:
1.更改php.ini,需要重啓php-fpm 語法:/usr/local/php/sbin/php-fpm restart
2.若想在編譯PHP時指定配置文件路徑,加上:--with-config-file-path=/etc ,些路徑需要是存在的路徑,否則php.ini無法寫入
3.找不到php.ini時,系統啓用默認配置模式
4.將php.ini文件所有路徑加入系統變量也可解決此問題(未償試)