MemCache缓存加速的部署
MemCache的源码编译
- 官网下载压缩包解压
- 将已经编译好的php加入到环境变量文件中,方便我们调用。
[root@server1 ~]# vim ~/.bash_profile
[root@server1 ~]# source ~/.bash_profile
[root@server1 ~]# php
php php-cgi php-config phpize
- 3)编译汇编
memcache的编译汇编不是直接使用./configure,而是使用phpize生成configure文件,然后再进行编译汇编
phpize是用来扩展php扩展模块的。通过phpize可以建立php的外挂模块,可以在原来编译好的php中加入memcached的扩展模块
phpize工具是在php的安装目录下,对应了但是的php环境,所以是要根据该php配置情况生成configure文件,必须在要进行扩展的目录下进行phpize,则configure就会在这个目录下。
[root@server1 memcache-2.2.5]# phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@server1 memcache-2.2.5]# ./configure
[root@server1 memcache-2.2.5]# make && make install
php中添加memcache模块
[root@server1 memcache-2.2.5]# vim /usr/local/lnmp/php/etc/php.ini #编辑配置文件,加入memcache模块
[root@server1 memcache-2.2.5]# ps -ef | grep php
[root@server1 memcache-2.2.5]# /etc/init.d/php-fpm reload #重启php服务
[root@server1 memcache-2.2.5]# php -m | grep memcache #在php中过滤memcache模块,
[root@server1 memcache-2.2.5]# php -m | grep mysql #在php中过滤mysql模块
memcached的配置
- 下载并安装,查看安装路径。
[root@server1 memcache-2.2.5]# yum install memcached -y
[root@server1 memcache-2.2.5]# rpm -qa | grep memcache
[root@server1 memcache-2.2.5]# rpm -ql memcached
- 开启服务,查看服务的监听端口
[root@server1 memcache-2.2.5]# /etc/init.d/memcached start
[root@server1 memcache-2.2.5]# netstat -antlupe #memcached开启的端口是11211
- 显示11211端口是表示监视11211端口的所有主机,如果想要只设置监听本机可进行如下操作:
注意:在企业中实际监听本机是不合理的。
[root@server1 memcache-2.2.5]# vim /etc/sysconfig/memcached
[root@server1 memcache-2.2.5]# /etc/init.d/memcached reload
可以看到11211端口只对本机开启。
- 我们将设置改回来,什么都不加。
Telnet的配置(实现远程连接服务器)
Telnet的定义:
Telnet协议是TCP/IP协议中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机的工作能力,在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制web服务器的方式。默认使用23端口。
Telnet提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可以登录到远端的Telnet服务器,在本地输入命令可以在服务器上运行,服务器把结果返回到本地,如果直接在服务器的控制台上操作,这样就可以在本地远程操作和控制服务器。
telnet的登录是:telnet IP 端口号
- 下载telnet。
[root@server1 memcache-2.2.5]# yum install telnet -y
- 登录并且查看。
[root@server1 memcache-2.2.5]# telnet localhost 11211
- 参数含义解释
set key flags exptime bytes value
其中含义如下:
key:键值对中的key,用于查找缓存值
flags:可以包括键值对的整型参数,客户机用于它存储关于键值对的额外信息
exptime:在缓存中保持键值对的时间长度(以秒为单位,0表示永远)
bytes:在缓存中存储的字节数
value:存储的数值,可以理解为key-value中的value
举例:
set name 0 0 6 #第0个 缓存 时间不限 最多6个字符
westoshhh
CLIENT_ERROR bad data chunk #长度超过设置的值 错误
ERROR
set name 0 0 6
westos
STORED
set name 0 8 6 #第0个 8s缓存 最多6个字符
westos
STORED
get name
VALUE name 0 6
westos
END
get name #缓存过期,被清理。
END
quit #退出
测试
- 首先将nginx以及其他服务打开:
[root@server1 html]# ls
50x.html index.html index.php memcache.php
[root@server1 html]# vim memcache.php
[root@server1 html]# /usr/local/lnmp/nginx/sbin/nginx
[root@server1 html]# netstat -ntlp
- 修改配置文件:
[root@server1 memcache-2.2.5]# vim memcache.php
[root@server1 memcache-2.2.5]# cp memcache.php /usr/local/lnmp/nginx/html/
[root@server1 memcache-2.2.5]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim memcache.php
- 浏览器中访问。
- 在浏览器中多次刷新此页
- 再次在浏览器中查看,发现命中率已经提高到95+%。
压力测试
- 加速页面和没有进行加速页面的对比
- 访问没有缓存的
ab -c 10 -n 5000 http://172.25.24.1/index.php
可以看到访问时间近16s,失败的请求数也非常多。 - 访问已经缓存了页面
ab -c 10 -n 5000 http://172.25.24.1/example.php
。
可以看到请求的时间大大缩短,请求失败的概率为0。
注意:example.php页面之所以会被加速,是因为文件的内容中写了
[root@server1 html]# vim example.php