memcache

Memcache



目錄

Memcache 1

一、Memcache介紹 1

1.What is Memcache? 1

2.Memcache作用? 1

3.互聯網常見緩存軟件: 1

4.Memcached在企業工作中的應用場景 1

5.Memcached服務的軟件特點 2

6.Memcached工作原理 3

7.Memcached工作原理深入(內存管理機制) 4

Memcached內存管理機制缺點及優化策略 4

二、Memcache部署 4

1.安裝memcached 5

2.Memcached狀態查看 6

3.關閉memcached,測試數據是否丟失 9

4.Memcached服務管理命令 9

三、監控Memcached 10

1.memcache.php 10

2.check_tcp 10

3.Nagios check_memcached插件 12





一、Memcache介紹

1.What is Memcache?

Memcache是一款開源的、高性能的純內存緩存服務軟件,Memcache項目誕生於2003年。Mem就是內存的意思,cache是緩存的意思,d是daemon的意思。Memcache服務分爲服務端和客戶端兩部分,C/S模式。

服務端軟件:memcached-1.4.13

客戶端軟件:memcache-2.25

Memcache官方網站:http://memcache.org


2.Memcache作用?

在啓動Memcached時,會指定一個內存大小參數,然後會被分配一個內存空間。當我們讀取數據庫後的業務數據,放入Memcached緩存中,下一次請求同樣數據的用戶,直接去Memcachd取數據返回給用戶。

這樣做的好處?

(1)對於用戶來說,用戶訪問網站更快了,體驗更好了。

(2)數據庫壓力降低了,內存沒有的時候,就會請求數據庫。

(3)提升網站併發訪問,服務器數量變少。


3.互聯網常見緩存軟件:

Memcached 純內存 用來緩存後端數據庫的數據(用戶信息,帖子,博文等)

Memcachedb 內存+磁盤 新浪開發,Memcacehd+BDB 緩存後端數據庫數據,直接做數據庫用

Redis 內存+磁盤 作用同Memcachedb 主從複製,數據類型更豐富。

squid 內存+磁盤

varinish 內存

緩存靜態圖片,JS,CSS,HTML,視頻等。CDN就是利用這類軟件做的分佈式緩存。


4.Memcached在企業工作中的應用場景

1|作爲數據庫的前端緩存應用

(1)完整緩存(易)

例如:京東的商品分類,就可以事先放到Memcached內存裏,然後在對外提供數據訪問。這個被稱之爲預熱。 

此時可以只讀取緩存就能讀到商品分類數據,無需讀取數據庫,所以數據庫的壓力就降下來了。


(2)熱點緩存(難)

熱點緩存一般是指用戶更新的商品,例如淘寶的賣家,當賣新增商品後,淘寶網的程序就會把商品寫入數據庫,然後讀取寫入的數據,把這部分數據,放入Memcached內存中,下一次訪問這個商品的請求直接從Memcached內存中取走了。這種方法用來緩存網站熱點的數據,即Memcached中緩存經常被訪問的數據。

這個過程可以通過程序實現,也可以在數據庫上安裝Memcache插件,直接由數據庫觸發更新內容到Memcached中。


 2|Memcached作爲集羣后端的session會話保持

web集羣session共享存儲設置:

默認php.ini中session的類型和配置路徑:

#session.save_handler = files

#session.save_path = "/tmp"

修改成如下配置:

session.save_handler = memcache

session.save_path = "tcp://10.0.0.18:11211"


3|Memcached分佈式緩存

[分佈式應用1]

Memcache支持分佈式,我們在應用服務器上改造,就可以更好的支持。

例如:可以根據key適當進行有規律的,比如以用戶爲主的網站來說,每個用戶都有UserID,那麼可以根據ID來進行提取和存取,比如1開頭的用戶保存在第一臺Memcache服務器上,以2開頭的保存在第二臺Memcache服務器上,存取數據都先按照UserID來進行轉換和存取。

[分佈式應用2]

在應用服務器上通過程序及URL_HASH,一致性哈希算法去訪問Memcached服務

[分佈式應用3]

門戶網站,例如百度,會通過一箇中間件代理(透明)負責請求後端的Cache服務。 

[分佈式應用4]

可以用常見的LVS,haproxy做Cache的負載均衡,和普通web應用服務相比,這裏的重點是調度算法,Cache一般會選擇URL_HASH及一致性hash算法。


分佈式緩存集羣:

(1)所有MC服務器內存的內容都是不一樣的。這些服務器內容加起來接近數據庫的容量

(2)通過在客戶端程序或者MC的負載均衡器上用HASH算法,讓同一內容都分配到一個MC服務器

(3)普通的HASH算法對於節點宕機會帶來大量的數據流動(失效),可能會引起雪崩效應

(4)一致性HASH算法可以讓節點宕機對節點的數據流動(失效)降到最低



5.Memcached服務的軟件特點

C/S模式架構

Memcached是一套C/S模式架構的軟件,由C語言編寫,總共2000多行代碼。

協議簡單

使用基於文本行的協議,能通過telnet/nc直接操作Memcached服務存取數據。

異步I/O 模型,使用libevent作爲事件處理通知機制。

libevent是一套利用C開發的程序庫,它將BSD系統的kqueue,Linux系統的epoll等事件處理功能封裝成一個接口,確保即使服務器端的連接數增加也能發揮很好的性能。

key/value鍵值數據類型

被緩存的數據以key/value鍵值形式存在

純內存存取管理模式

Memcached有一套自己管理內存的方式,這套管理方式非常高效,即全部數據都存放於Memcached服務事先分配的內存中,無持久性存儲的設計,和系統內存一樣,重啓系統或Memcached服務,Memcached內存中的數據庫丟失。

當內存中緩存的數據容量達到啓動時設定的內存值時,就自動使用LRU算法刪除過期的緩存數據。也可以對存儲的數據設置過期時間,這樣過期後數據自動被清除,服務本身不會監控過期,而是在訪問的時候查看key的時間戳判斷是否過期。

  如果希望重啓後,數據依然保留,那麼就需要類似sina開發的memcacehdb,redis等持久化內存緩存系統。

多個Memcached集羣節點互不通信

各個Memcached服務器之間互相不通信,都是獨立的存取數據,不共享任何信息,並且數據內容應該是不一致的。通過對客戶端的設計,讓Memcached具有分佈式,能支持海量緩存和大規模應用。

淘寶的Tengine支持了一致性HASH模塊

http://tengine.taobao.org/document_cn/http_upstream_consistent_hash_cn.html



6.Memcached工作原理

   Memcached是一套C/S模式架構的軟件,在服務端啓動服務守護進程可以爲memcached服務器指定監聽的IP地址、端口號、併發訪問連接數以及分配多少內存來處理客戶端的請求參數。

    Memcached由C語言開發, 全部代碼2000多行,採用異步I/O模式,其實現方式是基於libevent事件的單進程、單線程的。使用libevent作爲事件通知機制,多個服務器端可以協同工作,但這些服務器端之間是沒有任何通信聯繫的,每個服務器端只對自己的數據進行管理。應用程序端通過制定緩存服務器的IP地址和端口,就可以連接memcacehd服務互相通信。

    需要被緩存的數據以key/value鍵值對的形式保存在服務器端預分配的內存區中,每個被緩存的數據都有唯一的標識key,操作Memcached中的數據通過這個唯一標識key進行。緩存到Memcached中的數據僅放置在Memcached服務預分的內存中,而非存儲在Memcached所在的磁盤上,因此存取速度非常快。

    由於Memcached服務自身沒有對緩存的數據進行持久性存儲的設計,因此,在服務器端的memcached服務進程重啓之後,存儲在內存中的這些數據就會丟失。且當內存中緩存的數據容量達到啓動時設定的內存值時,就自動使用LRU算法刪除過期的緩存數據。

    開發Memcached的初衷就是僅爲內存緩存而設計的,因此並沒有過多考慮數據的永久存儲問題。因此,如果使用memcached作爲緩存數據服務,要考慮數據丟失後帶來的問題,例如:是否可以重新生成數據,還有,在高併發場合數據丟失會不會導致網站架構雪崩。

    企業場景如何正確重啓Memcached集羣服務?在前端控制入口訪問量。然後,啓動Memcached集羣並進行數據預熱,所有數據都預熱完畢後,在逐步的開放前端流量。


7.Memcached工作原理深入(內存管理機制)

    說Memcached內存管理機制之前,先說一下malloc。

    malloc的全稱是memory allocation(動態內存分配),當無法知道內存具體位置的時,想要綁定真正的內存空間,就需要用到動態分配內存。

    早期的Memcached內存管理方式是通過malloc分配的內存,使用完後通過free來回收內存。這種方式容易產生內存碎片並降低操作系統對內存的管理效率。加重操作系統內存管理器的負擔,最壞的情況下,會導致操作系統比memcached進程本身還慢,爲了解決上述問題,Slab Allocator內存分配機制就誕生了。

    現在的Memcached利用Slab Allocation機制來分配和管理內存的。

    Slab Allocation內存分配機制原理是按照預先規定的大小,將內存給Memcached服務的內存預先分割成特定長度的內存塊(chunk),再把尺寸相同的內存塊(chunk)分成組(chunks slabclass),這些內存塊不會釋放,可以重複利用。

    Memcached服務器中保存着slab內空閒chunk的列表,根據該列選擇chunk,然後將數據緩存於其中。當有數據存入時,Memcached根據接收到的數據大小,選擇最合適數據大小的slab分配一一個能存下這個數據的最小內存快(chunk)。

    例如:有100個字節的一個數據,就會被分配存入112字節的一個內存塊中,這樣會有12字節被浪費掉,這部分空間不能被使用了,這也是SlabAllocator機制的一個缺點。


Memcached內存管理機制小結:

(1)memcached的早期內存管理機制爲malloc(動態內存分配)

(2)malloc產生內存碎片,導致操作系統性能急劇下降

(3)slab內存分配機制可以解決內存碎片問題

(4)memcached服務的內存預先分割成特定長度的內存塊,稱爲chunk,用於緩存數據的內存空間或內存塊,相當於硬盤的block,只不過磁盤的每一個block都是相等的,而chunk只有同一個slab class內纔是相等的

(5)slab class是特定大小的包含多個chunk的集合或者組,一個memcached包含多個slab class,每個slab class包含多個相同大小的chunk

(6)slab機制也有缺點,chunk的空間會浪費。


8.Memcached內存管理機制缺點及優化策略

    避免浪費內存的辦法就是,預先計算出應用存入的數據大小,或把同一業務類型的數據存入一個Memcached服務器中,確保存入的數據大小相對均勻,這樣就可以減少內存的浪費。還有一種辦法是,在啓動時指定"-f"參數,能在某種程度上控制內存組之間的大小差異。在應用中使用Memcached時,通常可以不重新設置這個參數,使用默認值1.25進行部署。如果想優化Memcached對內存的使用,可以考慮重新計算數據的預期平均長度,調整這個參數來獲得合適的設置值。

-f<factor> chunk size growth factor(default:1.25!)

    memcachked在啓動時制定Growth Factor因子(通過-f選項),就可以控制slab之間的差異。默認值爲1.25

memcached -f 2 vv


二、Memcache部署

1.安裝memcached

(1)安裝libevent

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz

[root@memcached tools]# tar xf libevent-1.4.13-stable.tar.gz 

[root@memcached tools]# cd libevent-1.4.13-stable

[root@memcached libevent-1.4.13-stable]# ./configure

[root@memcached libevent-1.4.13-stable]# make && make install


(2)安裝memcached

[root@memcached tools]# tar xf memcached-1.4.13.tar.gz 

[root@memcached tools]# cd memcached-1.4.13

[root@memcached memcached-1.4.13]# ./configure

[root@memcached memcached-1.4.13]# make && make install


(3)啓動memcached

配置ld.so.conf路徑防止啓動memcached時報錯

memcached -h

memcached:error while loading shared libraries:libevent-1.4.so.2:cannot open shared object file:

No such file or directory

echo "/usr/local/lib" >> /etc/ld.so.conf

ldconfig


[root@memcached ~]# memcached -d -c10240 -p11211 -m16 -P /var/run/memcached.pid -uroot -l 192.168.51.91

-d 作爲守護進程在後臺運行

-m 指定memcached服務可以緩存數據的最大內存。默認爲64MB

-c 最大併發訪問連接數(default:1024),按照服務器的併發訪問量來設定

-p 指定memcached服務偵聽TCP端口號,默認額外11211

-P 指定pid

-u 運行memcached的用戶

-l 指定偵聽的服務器IP地址

-vv以very vrebose模式啓動,調試信息和錯誤輸出到控制檯

-P設置保存memcached的pid文件($$)

-h 顯示所有可用選項

-f 調優因子


(4)檢查啓動結果

[root@memcached ~]# ps -ef|grep memcached

root     117028      1  0 19:38 ?        00:00:00 memcached -d -c10240 -p11211 -m16 -P /var/run/memcached.pid -uroot -l 192.168.51.91

root     117037 107682  0 19:38 pts/1    00:00:00 grep memcached

[root@memcached ~]# ss -ntulp|grep 11211

udp    UNCONN     0      0          192.168.51.91:11211                 *:*      users:(("memcached",117028,27))

tcp    LISTEN     0      128        192.168.51.91:11211                 *:*      users:(("memcached",117028,26))

[root@memcached ~]#


(5)寫入數據檢查結果

向memcached中添加數據:鍵值對

[root@memcached ~]# printf "set key001 0 0 10\r\nxiaoyi1234\r\n"|nc 192.168.51.91 11211

STORED

[root@memcached ~]# printf "get key001\r\n"|nc 192.168.51.91 11211

VALUE key001 0 10

xiaoyi1234

END

[root@memcached ~]#

[root@memcached ~]# telnet 192.168.51.91 11211

Trying 192.168.51.91...

Connected to 192.168.51.91.

Escape character is '^]'.

get key001

VALUE key001 0 10

xiaoyi1234

END



2.Memcached狀態查看

stats 統計memcached的各種信息

stats settings 可以查看一些memcached設置

stats slabs查看slabs相關情況,通過這個命令能獲取每個slabs的chunk size長度,從而確定數據到底保存在哪個slab

stats items查看items相關情況

stats sizes 查看存在的item個數和大小

stats cachedump查看key value

stats reset 重新統計數據


[root@memcached ~]# printf "stats\r\n"|nc 192.168.51.91 11211

STAT pid 117028 

STAT uptime 737

STAT time 1449229825

STAT version 1.4.13

STAT libevent 1.4.13-stable

STAT pointer_size 64

STAT rusage_user 0.003999

STAT rusage_system 0.029995

STAT curr_connections 5

STAT total_connections 22

STAT connection_structures 6

STAT reserved_fds 20

STAT cmd_get 5

STAT cmd_set 2

STAT cmd_flush 0

STAT cmd_touch 0

STAT get_hits 3

STAT get_misses 2

STAT delete_misses 0

STAT delete_hits 0

STAT incr_misses 0

STAT incr_hits 0

STAT decr_misses 0

STAT decr_hits 0

STAT cas_misses 0

STAT cas_hits 0

STAT cas_badval 0

STAT touch_hits 0

STAT touch_misses 0

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 250

STAT bytes_written 134

STAT limit_maxbytes 16777216

STAT accepting_conns 1

STAT listen_disabled_num 0

STAT threads 4

STAT conn_yields 0

STAT hash_power_level 16

STAT hash_bytes 524288

STAT hash_is_expanding 0

STAT expired_unfetched 0

STAT evicted_unfetched 0

STAT bytes 82

STAT curr_items 1

STAT total_items 2

STAT evictions 0

STAT reclaimed 0

END

####################################################

stats settings

STAT maxbytes 16777216

STAT maxconns 10240

STAT tcpport 11211

STAT udpport 11211

STAT inter 192.168.51.91

STAT verbosity 0

STAT oldest 0

STAT evictions on

STAT domain_socket NULL

STAT umask 700

STAT growth_factor 1.25

STAT chunk_size 48

STAT num_threads 4

STAT num_threads_per_udp 4

STAT stat_key_prefix :

STAT detail_enabled no

STAT reqs_per_event 20

STAT cas_enabled yes

STAT tcp_backlog 1024

STAT binding_protocol auto-negotiate

STAT auth_enabled_sasl no

STAT item_size_max 1048576

STAT maxconns_fast no

STAT hashpower_init 0

STAT slab_reassign no

STAT slab_automove no

END

#######################################################

stats slabs

STAT 1:chunk_size 96

STAT 1:chunks_per_page 10922

STAT 1:total_pages 1

STAT 1:total_chunks 10922

STAT 1:used_chunks 1

STAT 1:free_chunks 1

STAT 1:free_chunks_end 10920

STAT 1:mem_requested 82

STAT 1:get_hits 4

STAT 1:cmd_set 2

STAT 1:delete_hits 0

STAT 1:incr_hits 0

STAT 1:decr_hits 0

STAT 1:cas_hits 0

STAT 1:cas_badval 0

STAT 1:touch_hits 0

STAT active_slabs 1

STAT total_malloced 1048512

END

##############################################

stats items

STAT items:1:number 1

STAT items:1:age 7998

STAT items:1:evicted 0

STAT items:1:evicted_nonzero 0

STAT items:1:evicted_time 0

STAT items:1:outofmemory 0

STAT items:1:tailrepairs 0

STAT items:1:reclaimed 0

STAT items:1:expired_unfetched 0

STAT items:1:evicted_unfetched 0

END

######################################

stats sizes

STAT 96 1

END

####################################



3.關閉memcached,測試數據是否丟失

[root@memcached ~]# printf "set key001 0 0 10\r\nxiaoyi1234\r\n"|nc 192.168.51.91 11211

STORED

[root@memcached ~]# printf "get key001\r\n"|nc 192.168.51.91 11211

VALUE key001 0 10

xiaoyi1234

END


[root@memcached ~]# pkill memcached

[root@memcached ~]# memcached -d -c10240 -p11211 -m16 -P /var/run/memcached.pid -uroot -l 192.168.51.91

[root@memcached ~]# printf "get key001\r\n"|nc 192.168.51.91 11211

END


4.Memcached服務管理命令

操作memcached命令的語法:

<command name> <key><flags><exptime><bytes>\r\n

-<command name>是set,add,repalce

set"存儲此數據"

add"存儲此數據,只在服務器未保留此鍵值的數據時"

replace"存儲此數據,只在服務器曾保留此鍵值的數據時"

-<key>是接下來的客戶端所要求存儲的數據的鍵值

-<flags>是在取回內容時,與數據和發送塊一同保存服務器上的任意16位無符號整形(用十進制來書寫)。客戶端可以用它作爲"位域"來存儲-一些特定的信息;它對服務器是不透明的。

-<exptime>是終止時間。如果爲0,該項永不過期(雖然它可能被刪除,以便爲其他緩存項目騰出位置)。如果非0(Unix時間戳或當前時刻的秒偏移),到達終止時間後,客戶端無法再獲得這項內容

-<bytes>是隨後的數據區塊的字節長度,不包括"\r\n".它可以是0(這時後面跟隨一個空的數據區塊)。

-<data block>是大段的8位數據,其長度由前面的命令行中的<bytes>指定。

-"STORED\r\n"表明成功。

-"NOT_S"表明數據沒有被存儲,但不是因爲發生錯誤。這通常意味着add或replace命令的條件不成立,或者,項目已經位列刪除隊列。


三、監控Memcached

1.memcache.php

下載地址http://livebookmark.net/memcachephp/memcachephp.zip

vim memcache.php

.....

define('ADMIN_USERNAME','memcache'); // 定義用戶名

define('ADMIN_PASSWORD','password'); // 定義密碼

.....

$MEMCACHE_SERVERS[] = 'mymemcache-server:11211'; //定義要查看的ip和端口

$MEMCACHE_SERVERS[] = 'mymemcache-server2:11212'; //可添加多個

 


2.check_tcp

通過nagios的check_tcp腳本,信息量太大,不過可以將此信息通過自己編寫腳本自定義監控memcached,不過有現成的Nagios-Plugins-Memcached插件

[root@memcached html]# /usr/local/nagios/libexec/check_tcp -H 192.168.51.91 -p 11211 -t 5 -E -s 'stats\r\nquit\r\n' -e 'uptime' -M crit

TCP OK - 0.001 second response time on port 11211 [STAT pid 119204

STAT uptime 9454

STAT time 1449493920

STAT version 1.4.13

STAT libevent 1.4.13-stable

STAT pointer_size 64

STAT rusage_user 0.193970

STAT rusage_system 0.250961

STAT curr_connections 5

STAT total_connections 270

STAT connection_structures 7

STAT reserved_fds 20

STAT cmd_get 2

STAT cmd_set 4

STAT cmd_flush 0

STAT cmd_touch 0

STAT get_hits 1

STAT get_misses 1

STAT delete_misses 0

STAT delete_hits 0

STAT incr_misses 0

STAT incr_hits 0

STAT decr_misses 0

STAT decr_hits 0

STAT cas_misses 0

STAT cas_hits 0

STAT cas_badval 0

STAT touch_hits 0

STAT touch_misses 0

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 1982

STAT bytes_written 264950

STAT limit_maxbytes 16777216

STAT accepting_conns 1

STAT listen_disabled_num 0

STAT threads 4

STAT conn_yields 0

STAT hash_power_level 16

STAT hash_bytes 524288

STAT hash_is_expanding 0

STAT expired_unfetched 0

STAT evicted_unfetched 0

STAT bytes 328

STAT curr_items 4

STAT total_items 4

STAT evictions 0

STAT reclaimed 0

END]|time=0.000525s;;;0.000000;5.000000


3.Nagios check_memcached插件

http://search.cpan.org/CPAN/authors/id/Z/ZI/ZIGOROU/Nagios-Plugins-Memcached-0.02.tar.gz


[root@memcached ~]# tar xf Nagios-Plugins-Memcached-0.02.tar.gz 

[root@memcached ~]# cd Nagios-Plugins-Memcached-0.02

[root@memcached Nagios-Plugins-Memcached-0.02]# perl Makefile.PL

*** Module::AutoInstall version 1.03

*** Checking for Perl dependencies...

[Core Features]

- Carp::Clan       ...missing.

- Cache::Memcached ...missing.

- FindBin          ...loaded. (1.50)

- Nagios::Plugin   ...missing.

- Time::HiRes      ...loaded. (1.9721)

==> Auto-install the 3 mandatory module(s) from CPAN? [y] y

Can't locate CPAN.pm in @INC (@INC contains: inc /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at inc/Module/AutoInstall.pm line 635, <STDIN> line 1.


yum install perl-CPAN -y

[root@memcached Nagios-Plugins-Memcached-0.02]# perl Makefile.PL

[root@memcached Nagios-Plugins-Memcached-0.02]# make && make install


command.cfg

define command{

        command_name    check_memcached_response

        command_line    $USER1$/check_memcached -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$

}


define command{

        command_name    check_memcached_size

        command_line    $USER1$/check_memcached -H $HOSTADDRESS$ --size-warning $ARG1$ --size-critical $ARG2$

}


define command{

        command_name    check_memcached_hit

        command_line    $USER1$/check_memcached -H $HOSTADDRESS$ --hit-warning $ARG1 --hit-critical $ARG2$

}


vim host.cfg

define host{

        use                     linux-server

        host_name               memcached

        alias                   memcached

        address                 192.168.51.91

        }


vim services.cfg

define service {

        use                             generic-service

        host_name                       memcached

        service_description             memcached

        check_command                   check_memcached_response!30!40


}


define service {

        use                             generic-service

        host_name                       memcached

        service_description             memcached_size

        check_command                   check_memcached_size!30!40

}


define service {

        use                             generic-service

        host_name                       memcached

        service_description             memcached_hit

        check_command                   check_memcached_hit!40!30

}




[root@memcached objects]# /usr/local/nagios/libexec/check_memcached -H 192.168.51.91 -w 30 -c 40

Base class package "Nagios::Plugin" is empty.

    (Perhaps you need to 'use' the module which defines that package first,

    or make that module available in @INC (@INC contains: /usr/local/nagios/libexec/../lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).

 at /usr/local/share/perl5/Nagios/Plugins/Memcached.pm line 6

BEGIN failed--compilation aborted at /usr/local/share/perl5/Nagios/Plugins/Memcached.pm line 6.

Compilation failed in require at /usr/local/nagios/libexec/check_memcached line 12.

BEGIN failed--compilation aborted at /usr/local/nagios/libexec/check_memcached line 12.

[root@memcached objects]#

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

yum -y install perl-Params-Validate perl-Math-Calc-Units perl-Regexp-Commonperl-Class-Accessor perl-Config-Tiny perl-Nagios-Plugin.noarch


[root@memcached Nagios-Plugins-Memcached-0.02]# /usr/local/nagios/libexec/check_memcached -H 192.168.51.91

MEMCACHED OK - OK


 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章