监控状态

2018年04月08日 09:35 | 1063次浏览 作者原创 版权保护

作为一个分布式缓存系统,memcached 可以非常出色地完成你交给它的工作,但这并不代表你可以对它放任不管,相反,我 们需要知道它的运行状况。memcached 提供了这样的协议,可以让你获得它的实时状态,我们通过 PHP 扩展可以十分容易地 做到。

 以下的代码片段用来获取 memcached 的状态:

<?php
$memcache = memcache_connect('10.0.1.12', 11711);
$stats = $memcache ->getStats();
var_dump($stats);
?>

我们来看一下包含了 memcached 运行状态的数组,如下所示

array(22)
{
["pid"]=> string(4) "3950"
["uptime"]=> string(8) "14670598"
["time"]=> string(10) "1239857310"
["version"]=> string(5) "1.2.2"
["pointer_size"]=> string(2) "32"
["rusage_user"]=> string(12) "14261.343278"
["rusage_system"]=> string(12) "65035.856487"
["curr_items"]=> string(8) "24144013"
["total_items"]=> string(9) "175459454"
["bytes"]=> string(10) "2562440230"
["curr_connections"]=> string(2) "13"
["total_connections"]=> string(10) "1433357990"
["connection_structures"]=> string(3) "164"
["cmd_get"]=> string(10) "1414539975"
["cmd_set"]=> string(9) "175563032"
["get_hits"]=> string(10) "1328926319"
["get_misses"]=> string(8) "85613656"
["evictions"]=> string(1) "0"
["bytes_read"]=> string(13) "1513089335558"
["bytes_written"]=> string(13) "4661687357256"
["limit_maxbytes"]=> string(10) "4284481536"
["threads"]=> string(1) "1"
}


真是面面俱到,你可以从这些数据中获得很多的信息,比如 uptime 表示 memcached 持续运行的时间;cmd_get 表示读取数据 项的次数;cmd_set 表示更新数据项的次数;get_hits 表示缓存命中的次数;bytes_read 表示读取的总字节数;bytes 表示缓存 区已使用空间的大小;limit_maxbytes 表示缓存区空间的总大小。 

对于这些丰富的状态信息,我们可以简单地从以下三个方面来看。

空间使用率 

持续关注缓存空间的使用率,可以让我们知道何时需要为缓存系统扩容,以避免由于缓存空间已满造成的数据被动淘汰, 有些数据项在过期之前被 LRU 算法淘汰可能会造成一定的不良后果。

缓存命中率 

这个话题在此处已经一点都不新鲜了,在前面关于反向代理缓存的章节中,我们曾经详细介绍过影响命中率的因素,它 们在这里同样适用。

I/O 流量 

我们需要关注 memcached 中数据项读写字节数的增长速度,这反映了它的工作量,我们可以从中得知 memcached 是空 闲还是繁忙。

同样,我们也希望在监控系统中集成对于 memcached 的监控,如图 1-1 及图 1-2 所示便是在 cacti 监控系统中对 memcached 的某些监控图片,我们会在本书的末尾介绍 cacti 监控系统。

图 1-1 在 cacti 中监控 memcached 的使用率

图 1-2 在 cacti 中监控 memcached 的 I/O 流量


此文章本站原创,地址 https://www.vxzsk.com/765.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程