加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

memcahced perl管理工具 memcached-tool

发布时间:2020-12-15 23:55:02 所属栏目:大数据 来源:网络整理
导读:#!/usr/bin/perl##?memcached-tool:#???stats/management?tool?for?memcached.##?Author:#???Brad?Fitzpatrick?brad@danga.com##?Contributor:#???Andrey?Niakhaichyk?andrey@niakhaichyk.org##?License:#???public?domain.??I?give?up?all?rights?to?this#?
#!/usr/bin/perl
#
#?memcached-tool:
#???stats/management?tool?for?memcached.
#
#?Author:
#???Brad?Fitzpatrick?<brad@danga.com>
#
#?Contributor:
#???Andrey?Niakhaichyk?<andrey@niakhaichyk.org>
#
#?License:
#???public?domain.??I?give?up?all?rights?to?this
#???tool.??modify?and?copy?at?will.
#
use?strict;
use?IO::Socket::INET;
my?$addr?=?shift;
my?$mode?=?shift?||?"display";
my?($from,?$to);
if?($mode?eq?"display")?{
????undef?$mode?if?@ARGV;
}?elsif?($mode?eq?"move")?{
????$from?=?shift;
????$to?=?shift;
????undef?$mode?if?$from?<?6?||?$from?>?17;
????undef?$mode?if?$to???<?6?||?$to???>?17;
????print?STDERR?"ERROR:?parameters?out?of?rangenn"?unless?$mode;
}?elsif?($mode?eq?'dump')?{
????;
}?elsif?($mode?eq?'stats')?{
????;
}?elsif?($mode?eq?'settings')?{
????;
}?elsif?($mode?eq?'sizes')?{
????;
}?else?{
????undef?$mode;
}
undef?$mode?if?@ARGV;
die
????"Usage:?memcached-tool?<host[:port]?|?/path/to/socket>?[mode]n
???????memcached-tool?10.0.0.5:11211?display????#?shows?slabs
???????memcached-tool?10.0.0.5:11211????????????#?same.??(default?is?display)
???????memcached-tool?10.0.0.5:11211?stats??????#?shows?general?stats
???????memcached-tool?10.0.0.5:11211?settings???#?shows?settings?stats
???????memcached-tool?10.0.0.5:11211?sizes??????#?shows?sizes?stats
???????memcached-tool?10.0.0.5:11211?dump???????#?dumps?keys?and?values
WARNING!?sizes?is?a?development?command.
As?of?1.4?it?is?still?the?only?command?which?will?lock?your?memcached?instance?for?some?time.
If?you?have?many?millions?of?stored?items,?it?can?become?unresponsive?for?several?minutes.
Run?this?at?your?own?risk.?It?is?roadmapped?to?either?make?this?feature?optional
or?at?least?speed?it?up.
"?unless?$addr?&&?$mode;
my?$sock;
if?($addr?=~?m:/:)?{
????$sock?=?IO::Socket::UNIX->new(
????????Peer?=>?$addr,????);
}
else?{
????$addr?.=?':11211'?unless?$addr?=~?/:d+$/;
????$sock?=?IO::Socket::INET->new(
????????PeerAddr?=>?$addr,????????Proto????=>?'tcp',????);
}
die?"Couldn't?connect?to?$addrn"?unless?$sock;
if?($mode?eq?'dump')?{
????my?%items;
????my?$totalitems;
????print?$sock?"stats?itemsrn";
????while?(<$sock>)?{
????????last?if?/^END/;
????????if?(/^STAT?items:(d*):number?(d*)/)?{
????????????$items{$1}?=?$2;
????????????$totalitems?+=?$2;
????????}
????}
????print?STDERR?"Dumping?memcache?contentsn";
????print?STDERR?"??Number?of?buckets:?"?.?scalar(keys(%items))?.?"n";
????print?STDERR?"??Number?of?items??:?$totalitemsn";
????foreach?my?$bucket?(sort(keys(%items)))?{
????????print?STDERR?"Dumping?bucket?$bucket?-?"?.?$items{$bucket}?.?"?total?itemsn";
????????print?$sock?"stats?cachedump?$bucket?$items{$bucket}rn";
????????my?%keyexp;
????????while?(<$sock>)?{
????????????last?if?/^END/;
????????????#?return?format?looks?like?this
????????????#?ITEM?foo?[6?b;?1176415152?s]
????????????if?(/^ITEM?(S+)?[.*?(d+)?s]/)?{
????????????????$keyexp{$1}?=?$2;
????????????}
????????}
????????foreach?my?$k?(keys(%keyexp))?{
????????????print?$sock?"get?$krn";
????????????my?$response?=?<$sock>;
????????????if?($response?=~?/VALUE?(S+)?(d+)?(d+)/)?{
????????????????my?$flags?=?$2;
????????????????my?$len?=?$3;
????????????????my?$val;
????????????????read?$sock,?$val,?$len;
????????????????print?"add?$k?$flags?$keyexp{$k}?$lenrn$valrn";
????????????????#?get?the?END
????????????????$_?=?<$sock>;
????????????????$_?=?<$sock>;
????????????}
????????}
????}
????exit;
}
if?($mode?eq?'stats')?{
????my?%items;
????print?$sock?"statsrn";
????while?(<$sock>)?{
????????last?if?/^END/;
????????chomp;
????????if?(/^STATs+(S*)s+(.*)/)?{
????????????$items{$1}?=?$2;
????????}
????}
????printf?("#%-17s?%5s?%11sn",?$addr,?"Field",?"Value");
????foreach?my?$name?(sort(keys(%items)))?{
????????printf?("%24s?%12sn",?$name,?$items{$name});
????}
????exit;
}
if?($mode?eq?'settings')?{
????my?%items;
????print?$sock?"stats?settingsrn";
????while?(<$sock>)?{
????????last?if?/^END/;
????????chomp;
????????if?(/^STATs+(S*)s+(.*)/)?{
????????????$items{$1}?=?$2;
????????}
????}
????printf?("#%-17s?%5s?%11sn",?$items{$name});
????}
????exit;
}
if?($mode?eq?'sizes')?{
????my?%items;
????print?$sock?"stats?sizesrn";
????while?(<$sock>)?{
????????last?if?/^END/;
????????chomp;
????????if?(/^STATs+(S*)s+(.*)/)?{
????????????$items{$1}?=?$2;
????????}
????}
????printf?("#%-17s?%5s?%11sn",?"Size",?"Count");
????foreach?my?$name?(sort(keys(%items)))?{
????????printf?("%24s?%12sn",?$items{$name});
????}
????exit;
}
#?display?mode:
my?%items;??#?class?->?{?number,?age,?chunk_size,?chunks_per_page,#????????????total_pages,?total_chunks,?used_chunks,#????????????free_chunks,?free_chunks_end?}
print?$sock?"stats?itemsrn";
my?$max?=?0;
while?(<$sock>)?{
????last?if?/^END/;
????if?(/^STAT?items:(d+):(w+)?(d+)/)?{
????????$items{$1}{$2}?=?$3;
????}
}
print?$sock?"stats?slabsrn";
while?(<$sock>)?{
????last?if?/^END/;
????if?(/^STAT?(d+):(w+)?(d+)/)?{
????????$items{$1}{$2}?=?$3;
????????$max?=?$1;
????}
}
print?"??#??Item_Size??Max_age???Pages???Count???Full???Evicted?Evict_Time?OOMn";
foreach?my?$n?(1..$max)?{
????my?$it?=?$items{$n};
????next?if?(0?==?$it->{total_pages});
????my?$size?=?$it->{chunk_size}?<?1024??
????????"$it->{chunk_size}B"?:
????????sprintf("%.1fK",?$it->{chunk_size}?/?1024.0);
????my?$full?=?$it->{free_chunks_end}?==?0???"yes"?:?"?no";
????printf("%3d?%8s?%9ds?%7d?%7d?%7s?%8d?%8d?%4dn",???????????$n,?$size,?$it->{age},?$it->{total_pages},???????????$it->{number},?$full,?$it->{evicted},???????????$it->{evicted_time},?$it->{outofmemory});
}


使用方法:

将上述代码保存为memcached-tool文件.?

查看memcached状态

[root@node1?~]#?perl?Mem.pl??127.0.0.1:11211
??#??Item_Size??Max_age???Pages???Count???Full???Evicted?Evict_Time?OOM
??1??????96B?????22304s???????1???????3?????yes????????0????????0????0
??2?????120B?????????0s???????1???????0?????yes????????0????????0????0
[root@node1?~]#?perl?Mem.pl??127.0.0.1:11211?stats
#127.0.0.1:11211???Field???????Value
?????????accepting_conns???????????1
???????????????auth_cmds???????????0
?????????????auth_errors???????????0
???????????????????bytes?????????238
??????????????bytes_read????????7154
???????????bytes_written??????139374
??????????????cas_badval???????????0
????????????????cas_hits???????????0
??????????????cas_misses???????????0
???????????????cmd_flush???????????1
?????????????????cmd_get??????????50
?????????????????cmd_set??????????67
???????????????cmd_touch???????????0
?????????????conn_yields???????????0
???connection_structures??????????15
???????crawler_reclaimed???????????0
????????curr_connections??????????12
??????????????curr_items???????????3
???????????????decr_hits??????????30
?????????????decr_misses???????????0
?????????????delete_hits???????????2
???????????delete_misses???????????0
???????evicted_unfetched???????????0
???????????????evictions???????????0
???????expired_unfetched???????????0
????????????????get_hits??????????36
??????????????get_misses??????????14
??????????????hash_bytes??????524288
???????hash_is_expanding???????????0
????????hash_power_level??????????16
???????????????incr_hits??????????30
?????????????incr_misses???????????0
????????????????libevent?2.0.21-stable
??????????limit_maxbytes????33554432
?????listen_disabled_num???????????0
????????????malloc_fails???????????0
?????????????????????pid???????48154
????????????pointer_size??????????64
???????????????reclaimed???????????1
????????????reserved_fds??????????20
???????????rusage_system????0.594909
?????????????rusage_user????1.153824
?????????????????threads???????????4
????????????????????time??1406887940
???????total_connections?????????175
?????????????total_items??????????59
??????????????touch_hits???????????0
????????????touch_misses???????????0
??????????????????uptime???????26566
?????????????????version??????1.4.20

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读