PHP服务缓存加速——xcache的安装与配置
1.PHP缓存加速器介绍(1)操作码的介绍和加速器的原理
当客户请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Operate Code,简称opcode文件),该文件是执行PHP代码后的一种二进制的表示形式。默认情况下,这个编译好的的操作码文件由PHP引擎执行后丢弃。而操作码缓存(opcode cache)的原理就是将编译后的操作码报错下来,并放到共享内存里,以便在下次调用PHP页面时重用它,它避免了相同代码的重复编译,节省了PHP引擎重复编译的时间,降低了服务器负载,同事减少了CPU和内存的开销。
(2)PHP缓存加速器软件介绍
为了提高PHP引擎的高并发访问以及执行速度,产生了一系列PHP缓存加速软件。这些软件设计的目的就是缓存前文提到的PHP引擎解析过的操作码文件,以便在指定的时间内有相同的PHP程序请求访问时,不需要重复解析编译,而是直接调用缓存中的PHP操作码文件,这样就提高了动态Web服务的处理速度,从而提升了用户访问企业网站的整体体验。
(3)LNMP环境PHP缓存加速器的原理详解。
在LNMP环境中,PHP引擎使用独立的FCGI(即php-fpm进程,Apache用的是libphp.so模块),由他来侦听来自Nginx的PHP程序请求,并交给PHP引擎处理,整个的执行流程大概如下。
1)Nginx接收客户端的PHP程序访问请求
2)Nginx根据拓展名等过滤规则将PHP程序请求传递给解析PHP的FCGI进程。
3)PHP FPM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中。
4)PHP解析器将PHP程序编译成opcode文件,然后把opcode缓存起来。
5)PHP FPM引擎执行opcode树后,返回数据给Nginx,进而返回客户端
6)Nginx接收客户新的PHP程序请求,PHP引擎就会直接读取缓存中的opcode并执行,将结果返回。不需要进行第四部,提高了php编译解析效率。
2.PHP缓存加速器安装环境准备
PHP缓存加速软件种类不少,比如eAccelerator,APC,Xcache,ZendOpcache等。在这里我们选择时候Xcache,原因是Xcache的效率较高,社区的活跃度较高,支持5.6版本的PHP。ZendOpcache可能是未来的首选,为官方的加速器软件,但是目前用的人还不多。
在安装Xcache加速器前,我们需要安装好LNMP的完整的环境,在前面我们就已经安装配置好了LNMP的服务环境了。安装的版本如下
项目版本LinuxCentOS release 6.5 (Final)Nginxnginx-1.12.2MySQL5.6.31 64bitPHPphp5.6.313.安装Xcache缓存加速器 因为我们用的PHP版本为5.6,通过Xcache官网可以了解到需要用到3.20的版本才能支持PHP5.6,可以到官网下载。http://xcache.lighttpd.net/。安装的步骤为解压,编译安装,具体的命令如下:
tar -xf xcache-3.2.0.tar.gz
cd xcache-3.2.0.tar.gz
/usr/local/php/bin/phpize #必不可少的一步
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make
make install 编译安装的过程中如果提示缺少什么类库文件,可以用yum开安装,安装成功之后会在php目录下生成xcache.so的文件。
http://s1.运维网.com/images/20180402/1522652788870439.png
4.安装数据库缓存及其他的PHP拓展插件(可选)
(1)安装PHP Memcached拓展插件
Memcached是一个开源,支持高性能,高并发及分布式的内存缓存服务软件。在传统的场景下,多数的Web应用都将数据保存到数据库中,WWW服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现RDBMS的负担加重,数据库响应缓慢,网站打开延迟的问题。使用Memcached的主要目的是,通过在自身内存中缓存数据库的查询结果,减少数据访问次数,以达到减少前端业务对数据库的直接高并发访问,从而提高大规模网站集群动态服务的并发访问能力。
Memcached我们会在以后的博文再做详细的介绍,这里我们只安装Memcachedd的客户端软件——Memcache,为了以后搭建好Memcached服务后可以使用。安装的步骤如下:
tar -xfmemcache-2.2.7.tgz
/usr/local/php/bin/phpize #必不可少的一步
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install 安装成功之后会在php目录下生成memcache.so的文件。
http://s1.运维网.com/images/20180402/1522653542339169.png
(2)安装ImageMagick图像软件
ImageMagick是一套功能强大,稳定而且免费的工具包和开发包,可以用来读写和处理89种基本格式额图片文件。利用ImageMagick,可以根据web应用程序的需要动态生成图片,还可以对一个(或一组)图片进行改变大小,旋转,锐化等操作,并将操作的结果以相同的格式或者其他格式保存。安装的步骤如下:
tar -xf ImageMagick-6.7.9-9.tar.xz
cd ImageMagick-6.7.9-9
./configure
make
make install PS:这个软件不是PHP的拓展,所以是没有生成.so,后面安装的imagick插件就会生成对应的.so文件。
(3)imagick插件工作需要ImageMagick软件的支持,所以需要先安装ImageMagick软件,否则安装不了该插件。安装的办法同上:
tar-xf imagick-3.4.3.tgz #之前打算安装2.3的版本,报错,后来到官网找到一个较新的版本
cd imagick-3.4.3
/usr/local/php/bin/phpize #必须的一步
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install 安装成功之后会在php目录下生成imagick.so的文件。
http://s1.运维网.com/images/20180402/1522654178475211.png
5.配置PHP加速和缓存相关的拓展插件模块
(1)配置Memcache/imagick模块生效
要使刚刚安装的模块起效,我们需要编辑php的配置文件php.ini。执行vim /usr/local/php/lib/php.ini,查找"extension_dir",然后改为"
extension_dir = "/usr/local/php5.6.31/lib/php/extensions/no-debug-non-zts-20131226/",接下来在文件的最后加入"
extension = memcache.so extension = imagick.so",配置文件的部分截图如下:
http://s1.运维网.com/images/20180402/1522654689804496.png
http://s1.运维网.com/images/20180402/1522654739234539.png
验证php.ini文件,如果没问题,重启php-fpm服务,查看phpinfo()网页检查对应的插件
/usr/local/php/sbin/php-fpm -t #出现successful字样才行
pkill php-fpm #重启php-fpm服务
/usr/local/php/sbin/php-fpmhttp://s1.运维网.com/images/20180402/1522655004859512.png
http://s1.运维网.com/images/20180402/1522655059957122.png
(2)配置Xcache插件加速
在软件的解压目录下/root/xcache-3.2.0,有个xcache.ini的配置文件,也就是XCache的配置文件。我们根据这个配置文件进行参数的调整之后,复制到php.ini文件的最后,部分的参数说明看备注
extension = xcache.so ;加载xcache.so
xcache.admin.enable_auth = On ;开启认证
xcache.admin.user = "pcm" ;这个自定义
xcache.admin.pass = "62b6d07a02edc7d58cb622def452e81b" ;这个MD5是后面生成填写进去的
xcache.shm_scheme = "mmap" ;设置xcache如何从系统分配共享内存
xcache.size= 256M ;设置xcache缓存的大小值
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 86400 ;设定cache对象的生存期TTL,0为永不过期
xcache.gc_interval = 3600
xcache.var_size= 64M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.var_namespace_mode = 0
xcache.var_namespace = ""
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.coredump_type = 0
xcache.disable_on_crash = Off
xcache.experimental = Off
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
xcache.coverager = Off
xcache.coverager_autostart =On
xcache.coveragedump_directory = "" 添加完成之后我们检查Xcache加速情况的配置,下图可以看到Xcache的配置已经本引用了。
http://s1.运维网.com/images/20180402/1522655868665360.png
然后我们重启php-fpm进程,到phpinfo()页面检查是否起效
/usr/local/php/sbin/php-fpm -t #出现successful字样才行
pkill php-fpm #重启php-fpm服务
/usr/local/php/sbin/php-fpmhttp://s1.运维网.com/images/20180402/1522656151590246.png
PS:MD5生成管理员密码的方法
# echo -n "pcm123456" |md5sum
62b6d07a02edc7d58cb622def452e81b- 把密钥放到php.ini文件里面去 (3)配置web界面,查看xcache缓存加速信息
在xcache软件的解压目录下有管理xcache的站点目录,我们把它复制到blog虚拟主机上。操作如下
cp -a /root/xcache-3.2.0/htdocs/ /usr/local/nginx/html/blog/xadmin
chown -R nginx:nginx /usr/local/nginx/html/blog/xadmin/
pkill php-fpm #重启php-fpm服务
/usr/local/php/sbin/php-fpm 浏览器然后打开xadmin页面,输入账号密码就会出现下面的页面。http://blog.pcm.com/xadmin/index.php
http://s1.运维网.com/images/20180402/1522656543179316.png
6.PHP缓存加速的压力测试
这些我们都做好了,总要知道做了这些配置之后我们的性能有了多少提升。下面我们用webbench工具来测试,webbench的安装和使用办法可以参考https://www.cnblogs.com/fjping0606/p/5852049.html,下面测试的结果
(1)使用了缓存加速器的情况。并发数量为30,测试时间30秒
http://s1.运维网.com/images/20180402/1522657170398899.png
测试的时候,top的截图
http://s1.运维网.com/images/20180402/1522657118669020.png
(2)不使用加速器的情况,并发数量为30,测试时间30秒。
http://s1.运维网.com/images/20180402/1522657420655360.png
对应的top的情况
http://s1.运维网.com/images/20180402/1522657394382068.png
(3)可以看出,使用了xcache缓存加速器之后,访问php网页的性能提升了3倍左右。
页:
[1]