memcache测试介绍

摘要

在我的博客PHPCMS开启memcache缓存篇章中部分描述了一下在LNMP下如何安装memcache,本章介绍如何监控和测试memcache的运行状态。

命令监控

前沿
接下来介绍如何通过命令去监控memcache,而且会列上相关参数信息
登录到已经安装了memcache服务器,利用以下命令得出相关信息
telnet 127.0.0.1 11211
stats

code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
stats
STAT pid 2206
STAT uptime 1111
STAT time 1471592501
STAT version 1.4.25
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 0.298954
STAT rusage_system 0.432934
STAT curr_connections 5
STAT total_connections 826
STAT connection_structures 9
STAT reserved_fds 20
STAT cmd_get 3362
STAT cmd_set 123
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 3331
STAT get_misses 31
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 603178
STAT bytes_written 8421667
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 252233
STAT curr_items 64
STAT total_items 123
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END

图例了解主要的参数信息
memcache
get_hits表示读取cache命中的次数,get_misses是读取失败的次数,即尝试读取不存在的缓存数据。即:命中率=get_hits / (get_hits + get_misses)

命中率越高说明cache起到的缓存作用越大。但是在实际使用中,这个命中率不是有效数据的命中率,有些时候get操作可能只是检查一个key存在不存在,这个时候miss也是正确的,这个命中率是从memcached启动开始所有的请求的综合值,不能反映一个时间段内的情况,所以要排查memcached的性能问题,还需要更详细的数值。但是高的命中率还是能够反映出memcached良好的使用情况,突然下跌的命中率能够反映大量cache丢失的发生

PHP代码测试

本部分是通过编写一个PHP代码文件,来是测试memcache是否执行,其实测试的原理是:当您服务器安装了memcache后,PHP就已经支持相关代码接口对象的调用和测试,所以可以简单的编写一个memcache的代码调用测试文件进行测试,将编写好的php文件放到你的php环境里面,并在web环境下访问测试

注意
memcache和memcached的调用接口是不一样的,相关细节代码接下来说

编写testpp.php
memcache代码

code
1
2
3
4
5
6
<?
$d=new memcached();
$d->connect('127.0.0.1',11211);
$d->set('memcahce',"check mencache");
echo $d->get('memcahce');
?>


memcached代码
code
1
2
3
4
5
6
<?
$d=new memcached();
$d->addServer('127.0.0.1',11211);
$d->set('memcahced',"check mencached");
echo $d->get('memcahced');
?>


当你在你访问你的网页http://ip/testpp.php,成功显示check mencache或者check mencached代表您的mencache已经成功显示

监控工具

在这里给大家提供一个外面大牛编写的监控工具点击下载memcache.php,使用方式,解压文件memcache.php 放到你的网站PHP网站目录,修改如下部分以使用此页面监控memcache运行状态
找到以下代码:

code
1
2
3
4
5
6
7
8
9
10
$VERSION='$Id: memcache.php,v 1.1.2.3 2008/08/28 18:07:54 mikl Exp $';

define('ADMIN_USERNAME','admin'); // Admin Username
define('ADMIN_PASSWORD','abcd1234'); // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = 'localhost:11211'; // 添加memcache服务器地址端口
$MEMCACHE_SERVERS[] = '192.168.1.233:11211'; // 添加memcache服务器2地址端口

编写好memcache.php 在放到你的网站服务器访问 http://ip/memcache.php
你会得到以下界面:
memcache

自定义设置

通常你可能需要扩展memcache的缓存大小或者其他参数,如何设置,其实Memcache提供相关的命令如下:
你可以通过ps -aux|grep memcache获取对应命令进程信息,加以修改。

code
1
2
3
4
5
6
7
8
9
[root@localhost ~]# ps -aux |grep memcache
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2206 0.0 1.3 354616 25032 ? Ssl Aug19 0:13 /usr/local/memc
ached/bin/memcached -d -l 127.0.0.1 -p 11211 -u root -m 64 -c 1024 -P /var/run/m
emcached.pid
root 8857 0.0 0.0 331112 1148 ? Ssl 21:00 0:00 memcached -u ro
ot -d stop
root 8891 0.0 0.0 103260 856 pts/0 S+ 21:03 0:00 grep memcache
[root@localhost ~]#

你会发现,通过lnmp的安装,会默认使用如下命令运行memcache
/usr/local/memcached/bin/memcached -d -l 127.0.0.1 -p 11211 -u root -m 64 -c 1024 -P /var/run/memcached.pid
你可以删除此进程,并修改此命令重新运行,便可以实现对memcache的主要参数设置并运行已达到你对缓存的要求。

我们先来解释这几个参数的含义吧。

-m 指定缓存所使用的最大内存容量,单位是Megabytes,默认是64MB

-u 只有以root身份运行时才指定该参数

-d 以daemon的形式运行

-l 指定监听的地址

-p 指定监听的TCP端口号,默认是11211
其他常用的参数
-t 指定线程数,默认是4个

-h 打印帮助信息

-c 最大同时连接数,默认是1024.

-U 指定监听的UDP端口号,默认是11211

-M 内存耗尽时显示错误,而不是删除项

一开始说的“-d”参数需要进行进一步的解释

-d install 安装memcached

-d uninstall 卸载memcached

-d start 启动memcached服务

-d restart 重启memcached服务

-d stop 停止memcached服务

-d shutdown 停止memcached服务

结语

如果你还需要了解更多技术文章信息,请继续关注Jory博客

看一看,共同关注,共同分享与讨论!