memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。据说官方所说,其用户包括twitter、digg、flickr等,都是些互联网大腕呀。目前用memcache解决互联网上的大用户读取是非常流行的一种用法。
停止和启动,暂时通过kill进程(ps -aux|grep memcached)来解决的。-d参数好像没用。
下载安装
下载了,我到了其官方(http://memcached.org/),目前最新的下载版本是1.4.5
还要再安装libevent这个软件,从官方(http://monkey.org/~provos/libevent/)下载,目前最新的稳定版是1.4.14。
下载后,将其上传到了/home/blue/下面
执行以下命令
cd /home/blue tar zxvf memcached-1.4.5.tar.gz tar zxvf libevent-1.4.14b-stable.tar.gz #安装libevent cd libevent-1.4.14b-stable ./configure --prefix=/home/liuzhy/libevent-1.4.14b-stable make make install #安装memcache cd /home/blue/memcached-1.4.5 ./configure --prefix=/home/blue/memcached-1.4.5 --with-libevent=/home/blue/libevent-1.4.14b make make install
启动memcache服务
进入bin目录,执行:./memcached -d -m 1024 -u blue,但是系统说有一个共享库没有加载,共享库的名称为:libevent-1.4.so.2
首先要查看一下memcached 这个命令用到的链接库地址在哪儿。执行如下命令可以查看:
LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
显示出memcache从哪些地方找libevent-1.4.so.2这个文件,所以,我们只有将libevent-1.4.so.2这个文件指定到上面任意一个目录即可。这里我们将其指定到/lib64/下面。做一个软连接即可。命令如下:
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2
在启动一下memcache服务:./memcached -d -m 1024 -u blue就可以了
下面将memcached命令的参数罗伦如下,
# /usr/local/bin/memcached -d -m 200 -u root -l 192.168.1.91 -p 12301 -c 1000 -P /tmp/memcached.pid 相关解释如下: -d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,这里是200MB -u是运行Memcache的用户,如果当前为 root 的话,需要使用此参数指定用户。 -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.1.91 -p是设置Memcache监听的端口,我这里设置了12301,最好是1024以上的端口 -c选项是最大运行的并发连接数,默认是1024,这里设置了256 -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid 停止Memcache进程: # kill `cat /tmp/memcached.pid` 也可以启动多个守护进程,但是端口不能重复
一开始说的“-d”参数需要进行进一步的解释
-d install 安装memcached -d uninstall 卸载memcached -d start 启动memcached服务 -d restart 重启memcached服务 -d stop 停止memcached服务 -d shutdown 停止memcached服务
检查服务:
1、查看启动的memcache服务:
netstat -lp | grep memcached
2、查看memcache的进程号(根据进程号,可以结束memcache服务:“kill -9 进程号”)
ps -ef | grep memcached
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 | 当前线程数 |
很简单,假设memcached运行在本地的11211端口,那么跑一下命令行:
$ echo 'flush_all' | nc localhost 11211
[root@localhost awstats]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
STAT pid 1841
STAT uptime 1138
STAT time 1400664482
STAT version 1.4.4
STAT pointer_size 32
STAT rusage_user 0.007998
STAT rusage_system 0.006998
STAT curr_connections 10
STAT total_connections 13
STAT connection_structures 11
STAT cmd_get 2
STAT cmd_set 2
STAT cmd_flush 0
STAT get_hits 2
STAT get_misses 0
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 auth_cmds 0
STAT auth_errors 0
STAT bytes_read 127
STAT bytes_written 106
STAT limit_maxbytes 1073741824
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 150
STAT curr_items 2
STAT total_items 2
STAT evictions 0
END
ERROR
get eeeea33
VALUE eeeea33 0 22
This is eeeea33 data!!
END
yum安装方法:
-
首先查看memcache的依赖库是否有安装,如果对这个有疑问可以参考php手册的memcache的安装需求说明
命令如下:
查询: rpm -qa | grep libevent
安装:yum -y install libenent*
-
安装memcached,相当于apache的httpd是用来启动memcache和管理memcache的
命令如下:
yum -y install memcached
-
接下来再安装memcache,这里我们不要考虑对别的包有什么依赖yum会帮我们解决的,这也是yum的强悍之处
命令如下:
yum -y install php-pecl-memcache
-
然后查看memcached的bin安装目录,启动memcache,相关参数的作用里面有详细说明
-
然后简单的写一个memcache连接是否成功的测试代码测试一下看看是否成功,很不给面子没有显示出来我们要的效果
-
下面说一下我的一般排错办法
1.查看相关文件的权限时候设置正常
2.查看linux的防火墙的设置
3.动态查看apache的错误日志的提示信息
4.查看linux的SELINUX的设置
那下面就安按照这个思路去排错
-
上面按照前三步的顺序调查问题仍然存在,最后的去看看SELINUX的设置了,其中你可以用tail -f error_log 去动态监测错误日志,但是这里从错误日志看不出来什么东西
命令如下:
查看SELINUX的模式:getenforce
设置SELINUX的模式:setenforce 0
或者编辑这个文 :/etc/selinux/config
最后重启查看效果,问题解决了!
END