第二十六章 LAMP与LNMP加速与缓存优化进阶实战
一、PHP缓存加速器介绍
1、LAMP和LNMP优化的主要对象
LAMP是由Apache通过libphp5.so来调用PHP,LNMP是由Nginx通过fcgi(php-fpm)来调用PHP,两者的优化最后都是对PHP的优化,主要是针对一个主配置文件php.ini,Nginx可能还要对php-fpm.conf进行一下优化。
2、PHP并发低的原因
(1)PHP如果不做优化或正常优化,其并发也就只有300-1000个,原因是每次都要对程序进行编译解析。解决办法就是缓存,也就是将解析结果进行缓存,称为操作码缓存(Opcode cache)。
(2)受制于后端的数据库和存储的并发。解决办法是在数据库和存储前面缓存。
3、操作码缓存介绍
当请求一个PHP程序时,PHP引擎会解析该程序,并将它们编译为特定操作码(也就是生成可以直接运行的中间代码:一种二进制表示形式),也称为操作码(Operate Code,简写为opcode)。随后,此操作码由PHP引擎执行并丢弃。而操作码缓存将会保存这个编译后的操作码,并在一下次调用该页面时重用它,这会节省很多重复编译的时间。操作码缓存的目地是避免重复编译,减少CPU和内存开销。操作码缓存主要有eAccelerator、XCache、APC等,只需安装其中一个就行了。
4、LAMP环境PHP缓存加速器的原理
(1)Apache接收客户的PHP程序请求,并根据规则过滤之。
(2)Apache将PHP程序请求传送给PHP处理模块libphp5.so。
(3)PHP引擎定位磁盘上的PHP文件,并将其加载到内存中解析。
(4)PHP处理模块libphp5.so将PHP源代码编译成为操作码。
(5)PHP处理模块libphp5.so执行操作码,然后把操作码缓存起来。(这步就是速器要解析的)
(6)Apache接收客户端新的PHP程序请求,PHP引擎直接读取缓存执行操作码文件。
5、LNMP环境PHP缓存加速器的原理
(1)Nginx接收客户端的PHP程序访问请求。
(2)Nginx根据扩展名等过滤规则将PHP程序请求传递给解析PHP的FCGI(php-fpm)进程。
(3)PHP FPM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中。
(4)PHP解析器将PHP程序编译成为操作码文件,然后把操作码缓存起来。(这步就是速器要解析的)
(5)PHP FPM引擎执行操作码后,返回数据给Ngnix,进而返回客户端。
(6)Nginx接收客户新的PHP程序请求,PHP FPM引擎就会直接读取缓存中的操作码并执行,将结果返回
6、PHP缓存加速器软件种类和选择建议
(1)操作码缓存类:
主要有eAccelerator、XCache、APC、Zend等
选择建议为在eAccelerator和XCache之间,二选一。 友测试结果是:XCache > eAccelerator.原因是XCache更快一些,且开发 区更活跃。
(2)数据库缓存类:
主要有Memcache、Redis。
(3)存储缓存类:
主要有CDN等。
二、操作码缓存加速器安装
1、LAMP/LNMP环境
软件 |
版本 |
Linux |
RHEL6.4_32/CentOS6.8_64 |
Apache/Nginx |
2.2.27/1.6.2 |
MySQL |
5.1.72/5.5.32 |
PHP |
5.3.27 |
2、检查软件环境
通过SecureCRT的交互窗口,同时操作LAMP和LNMP所在的两台虚拟机。
(1)检查Linux版本
cat /etc/redhat-release
(2)检查Linux为32位还是64位
uname –m
(3)检查Apache/Nginx的版本
/application/apache/bin/apachectl –v
Server version: Apache/2.2.27 (Unix)
/application/nginx/sbin/nginx -v
nginx version: nginx/1.6.2
(4)检查PHP的版本
/application/php/bin/php –v
PHP 5.3.27 (cli) (built: Mar 5 2017 18:07:41)
(5)检查MySQL的版本
mysql -uroot –p123456
LAMP: Server version: 5.1.72 Source distribution
LNMP: Server version: 5.5.32 MySQL Community Server (GPL)
(6)查看Linux安装的包
yum grouplist
(7)查看Nginx的编译参数
/application/nginx/sbin/nginx –V
nginx version: nginx/1.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
TLS SNI support enabled
configure arguments: –user=nginx –group=nginx–prefix=/application/nginx1.6.2 –with-http_stub_status_module–with-http_ssl_module
(8)查看Apache的编译参数
/application/apache/bin/apachectl–V #可以查看,但不全
Server version: Apache/2.2.27 (Unix)
Architecture: 32-bit
Server MPM: Worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with….
-DAPACHE_MPM_DIR=”server/mpm/worker”
-D APR_HAS_SENDFILE
…
cat/application/apache/build/config.nice #用这个查看编译的参数
#! /bin/sh
#
# Created by configure
“./configure”
“–prefix=/application/apache2.2.27”
“–enable-deflate”
“–enable-expires”
“–enable-headers”
“–enable-moules=most”
“–enable-so”
“–with-mpm=worker”
“–enable-rewrite”
“$@”
(9)查看MySQL的编译参数(免编译的查不到,只能查看编译安装的)
grep CONFIGURE_LINE /application/mysql/bin/mysqlbug
CONFIGURE_LINE=”./configure ‘–prefix=/application/mysql5.1.72”–with-unix-socket-path=/application/mysql5.1.72/tmp/mysql.sock”–localstatedir=/application/mysql5.1.72/data’ ‘–enable-thread-safe-client”–with-mysqld-user=mysql’ ‘–with-big-tables’ ‘–without-debug”–with-pthread’ ‘–enable-assembler’ ‘–with-extra-charsets=complex”–with-readline’ ‘–with-ssl’ ‘–with-embedded-server’ ‘–enable-local-infile”–with-plugins=partition,innobase’ ‘–with-mysqld-ldflags=-all-static”–with-client-ldflags=-all-static'”
`test -n”$CONFIGURE_LINE” &&echo “Configure command: $CONFIGURE_LINE”`
(10)查看PHP的编译参数
/application/php/bin/php -i | grep configure
#LAMP:
Configure Command => ‘./configure’ ‘–prefix=/application/php5.3.27’ ‘–with-apxs2=/application/apache/bin/apxs”–with-mysql=/application/mysql’ ‘–with-xmlrpc’ ‘–with-openssl”–with-zlib’ ‘–with-freetype-dir’ ‘–with-gd’ ‘–with-jpeg-dir”–with-png-dir’ ‘–with-iconv=/usr/local/libiconv’ ‘–enable-short-tags”–enable-sockets’ ‘–enable-zend-multibyte’ ‘–enable-soap”–enable-mbstring’ ‘–enable-static’ ‘–enable-gd-native-ttf’ ‘–with-curl”–with-xsl’ ‘–enable-ftp’ ‘–with-libxml-dir’
#LNMP:
Configure Command => ‘./configure’ ‘–prefix=/application/php5.3.27’ ‘–with-mysql=/application/mysql”–with-iconv-dir=/usr/local/libiconv’ ‘–with-freetype-dir’ ‘–with-jpeg-dir”–with-png-dir’ ‘–with-zlib-dir’ ‘–with-libxml-dir=/usr’ ‘–enable-xml”–disable-rpath’ ‘–enable-safe-mode’ ‘–enable-bcmath’ ‘–enable-shmop”–enable-sysvshm’ ‘–enable-inline-optimization’ ‘–with-curl”–with-curlwrappers’ ‘–enable-mbregex’ ‘–enable-fpm’ ‘–enable-mbstring”–with-mcrypt’ ‘–with-gd’ ‘–enable-gd-native-ttf’ ‘–with-openssl”–with-mhash’ ‘–enable-pcntl’ ‘–enable-sockets’ ‘–with-xmlrpc’ ‘–enable-zip”–enable-soap’ ‘–enable-short-tags’ ‘–enable-zend-multibyte”–enable-static’ ‘–with-xsl’ ‘–with-fpm-user=nginx’ ‘–with-fpm-group=nginx”–enable-ftp’
3、解决perl的编译问题
由于PHP的加速器主要都是perl语言写的或与perl相关,所以首先要解决perl的编译问题,防止后面在安装php加速器时,出现编译问题。通过SecureCRT的交互窗口,同时操作LAMP和LNMP所在的两台虚拟机。
(1)设置环境变量
a、为了去除所有本地化的设置,保证命令能正确执行
echo “export LC_ALL=C” >> /etc/profile
b、查看是否设置成功
tail -1 /etc/profile
export LC_ALL=C
c、让设置生效
source /etc/profile 或 . /etc/profile
d、说明:
在很多的shell脚本中,我们经常会看见某一句命令的前面有一句“LC_ALL=C”,这到底是什么意思C_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。
在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为_.,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置:
(i)LC_COLLATE:定义该环境的排序和比较规则
(ii)LC_CTYPE:用于字符分类和字符串处理。
控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
(iii)LC_MONETARY:货币格式
(iv)LC_NUMERIC:非货币的数字显示格式
(v)LC_TIME:时间和日期格式
(vi)LC_MESSAGES:提示信息的语言。
另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”。
(vii)LANG:LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于LC_ALL。
(viii)LC_ALL:它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。
注意,LANG的值不受该宏影响。C”是系统默认的locale,”POSIX”是”C”的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。
(2)安装perl相关软件(perl-CPAN和perl-devel只需安一个)
yum –y install perl-CPAN 或yum –y install perl-devel
4、安装eAccelerator缓存加速模块
eAccelerator是一个自由开放源码php加速、优化和动态内容缓存的扩展模块,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍。eAccelerator的前身是truck-mmcache。缺点是开发已不够活跃。
(1)注意事项
eaccelerator-0.9.6版本的是针对PHP5.3.XX版本,如果是PHP5.2.XX版本,则会在make时 错:make ***[optimize.lo] Error 1。PHP5.2.XX应使用eaccelerator-0.9.5.2版本。其它php和eaccelerator的对应关系,参考官方文档。
(2)解压eaccelerator-0.9.6.tar.bz2
tar -jxf eaccelerator-0.9.6.tar.bz2
cd eaccelerator-0.9.6
(3)执行PHP的phpize命令
/application/php/bin/phpize
说明:php在安装第三方插件之前,一般都要执行一下该命令。phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。
(4)configure
./configure –enable-eaccelerator=shared–with-php-config=/application/php/
bin/php-config
(5)make
make
(6)make install
make install
说明:make install后,会在相应扩展路径下生成eaccelerator.so的模块文件
LAMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
LNMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
(7)查看生成的扩展模块:eaccelerator.so
ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
ll /application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
-rwxr-xr-x 1 root root 345542 Mar 16 17:21 eaccelerator.so
5、安装xcache缓存加速模块
XCache 是一个又快又稳定的 PHP opcode 缓存器.经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过(在 linux 上)测试并支持所有现行 PHP 分支的最新发布版本, 如 PHP_4_3 PHP_4_4 PHP_5_0 PHP_5_1PHP_5_2 HEAD(6.x), 并支持线程安全/Windows. 与同类 opcode 缓存器相比更胜一筹, 比如能够快速跟进 PHP 版本. XCache能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高页面生成速率2到5倍, 降低服务器负载.
(1)解压xcache-1.3.2.tar.bz2
tar jxf xcache-1.3.2.tar.bz2
cd xcache-1.3.2
(2)执行PHP的phpize命令
/application/php/bin/phpize
(3)configure
./configure –enable-xcache–with-php-config=/application/php/bin/php-config
(4)make
make
(5)make install
make install
说明:make install后,会在相应扩展路径下生成xcache.so的模块文件
LAMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
LNMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
(6)查看生成的扩展模块:xcache.so
ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
ls /application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
eaccelerator.so xcache.so
三、数据库缓存安装:客户端Memcache安装
1、Memcache简介
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。MemCache分为服务端软件和客户端插件两部分:
服务端软件:memcached。本课程中使用的是memcached-1.4.3
客户端软件:memcache。本课程中使用的是memcache-2.2.5
2、MemCache的工作流程
MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
3、客户端Memcache安装
(1)解压memcache-2.2.5.tgz
tar zxf memcache-2.2.5.tgz
cd memcache-2.2.5
(2)执行PHP的phpize命令
/application/php/bin/phpize
(3)configure
./configure –with-php-config=/application/php/bin/php-config
(4)make
make
(5)make install
make install
说明:make install后,会在相应扩展路径下生成memcache.so的模块文件
LAMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
LNMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
(6)查看生成的扩展模块:memcache.so
ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
ls /application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
eaccelerator.so memcache.so xcache.so
四、安装PDO_MYSQL扩展模块(可选,非必须安装)
PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。
1、解压PDO_MYSQL-1.0.2.tgz
tar zxf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
2、执行PHP的phpize命令
/application/php/bin/phpize
3、configure
./configure–with-php-config=/application/php/bin/php-config–with-pdo-mysql=/application/mysql
4、make
make
5、makeinstall
make install
说明:make install后,会在相应扩展路径下生成pdo_mysql.so的模块文件
LAMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
LNMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
6、查看生成的扩展模块:memcache.so
ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
ls /application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
eaccelerator.so memcache.so pdo_mysql.so xcache.so
五、安装ImageMagick图像处理程序及imagick扩展模块
1、ImageMagick介绍
ImageMagick图片处理是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过90种的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。[1] 利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。主要功能如下:
(1)将图片从一个格式转换到另一个格式,包括直接转换成图标。
(2)改变尺寸、旋转、锐化(sharpen)、减色、图片特效
(3)缩略图片的合成图( a montage of imagethumbnails)
(4)适于web的背景透明的图片
(5)将一组图片作成gif动画,直接convert
(6)将几张图片作成一张组合图片,montage
(7)在一个图片上写字或画图形,带文字阴影和边框渲染。
(8)给图片加边框或框架
(9)取得一些图片的特性信息
(10)几乎包括了gimp可以作到的常规插件功能。甚至包括各种曲线参数的渲染功能。
2、imagick扩展模块介绍
imagick扩展模块是一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能。imagick插件工作需要ImageMagick软件的支持,所以必须要先安装ImageMagick,否则会 错是。
3、ImageMagick安装
(1)解压ImageMagick.tar.gz
tar zxf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2
(2)configure
./configure
(3)make
make
(4)make install
make install
(5)说明:perl 错
如果没有安装 perl库,则会在make时 PerMagick/Makefile Error 2的错误。
解决办法:yum –y install perl-CPAN 或 yum –y install perl-devel
4、imagick扩展模块安装
(1)解压imagick-2.3.0.tgz
tar zxf imagick-2.3.0.tgz
cd imagick-2.3.0
(2)执行PHP的phpize命令
/application/php/bin/phpize
(3)configure
./configure –with-php-config=/application/php/bin/php-config
(4)make
make
(5)make install
make install
说明:make install后,会在相应扩展路径下生成memcache.so的模块文件
LAMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
LNMP路径是:/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
(6)查看生成的扩展模块:memcache.so
ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
ls /application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/
eaccelerator.so imagick.so memcache.so pdo_mysql.so xcache.so
六、配置PHP缓存:memcache、pdo_mysql和imagick
1、备份php.ini
cd /application/php/lib
cp php.ini php.ini.root.20170317
(1)修改第819行:指定extension_dir路径(注意LNMP和LAMP的路径是不同的)
LNMP:
修改前:; extension_dir = “./”
修改后:extension_dir= “/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/”
LAMP:
修改前:; extension_dir = “./”
修改后:extension_dir= “/application/php5.3.27/lib/php/extensions/no-debug-zts-20090626/”
(2)在结尾加上下面3行
extension = memcache.so
extension = pdo_mysql.so
extension = imagick.so
3、重启php(LNMP是php-fpm),让配置文件生效
LNMP:
pkill php-fpm
/application/php/sbin/php-fpm
LAMP:
pkill apache
/application/apache/bin/apachectl start
4、通过phpinfo.php查看配置是否生效
LNMP:
http://www.abc.org/phpinfo.php
LAMP:
ifconfig eth0:1 192.168.188.99/24 up
http://192.168.188.99/phpinfo.php
通过Ctrl+F在页面搜索上面三个模块。
七、配置和测试PHP操作码缓存:eAccelerator
1、配置eAccelerator的缓存目录
mkdir -p /tmp/eaccelerator
说明:
此目录是用来做缓存,可以用tmpfs内存文件系统来存储(mount到tmpfs下),也可以放在快盘上(SSD)。tmpfs是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似像,但不完全相同,和ramdisk一样,tmpfs可以使用RAM,但它也可以使用swap分区来存储。tmpfs 的主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。即使用了一些交换分区,性能仍然是卓越的,当更多空闲的 VM 资源可以使用时,这部分 tmpfs 文件系统会被移动到 RAM 中去。
2、对eAccelerator缓存目录授权web用户可读写
LNMP:
chown -R nginx.nginx /tmp/eaccelerator
LAMP:
chown -R httpduser.httpduser /tmp/eaccelerator
可以通过grep User/application/apache/conf/httpd.conf命令来查看apache的web操作用户
3、修改php.ini文件,通过cat追加以下内容(通过SecureCRT同时操作LNMP和LAMP)
cat >> /application/php/lib/php.ini
[eaccelerator]
extension=eaccelerator.so
eaccelerator.shm_size=”64″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”3600″
eaccelerator.shm_prune_period=”3600″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
EOF
4、查看追加是否成功
tail -20 /application/php/lib/php.ini
5、查看配置是否成功和生效(不需要重启)
/application/php/bin/php -v
PHP 5.3.27 (cli) (built: Mar 5 2017 18:07:41)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
with eAccelerator v0.9.6, Copyright (c) 2004-2010eAccelerator, by eAccelerator
6、查看/tmp/eAcceleratork下的内容(每个目录下有16个文件)
ll /tmp/eaccelerator
drwxrwxrwx 18 root root 4096 Mar 18 04:20 0
drwxrwxrwx 18 root root 4096 Mar 18 04:20 1
drwxrwxrwx 18 root root 4096 Mar 18 04:20 2
drwxrwxrwx 18 root root 4096 Mar 18 04:20 3
drwxrwxrwx 18 root root 4096 Mar 18 04:20 4
drwxrwxrwx 18 root root 4096 Mar 18 04:20 5
drwxrwxrwx 18 root root 4096 Mar 18 04:20 6
drwxrwxrwx 18 root root 4096 Mar 18 04:20 7
drwxrwxrwx 18 root root 4096 Mar 18 04:20 8
drwxrwxrwx 18 root root 4096 Mar 18 04:20 9
drwxrwxrwx 18 root root 4096 Mar 18 04:20 a
drwxrwxrwx 18 root root 4096 Mar 18 04:20 b
drwxrwxrwx 18 root root 4096 Mar 18 04:20 c
drwxrwxrwx 18 root root 4096 Mar 18 04:20 d
drwxrwxrwx 18 root root 4096 Mar 18 04:20 e
drwxrwxrwx 18 root root 4096 Mar 18 04:20 f
tree /tmp/eaccelerator
/tmp/eaccelerator
|– 0
| |– 0
| |– 1
| |– 2
。。。
|– 1
| |– 0
| |– 1
| |– 2
。。。
6、注意事项
如果配置了Zend,则[eaccelerator]模块段的配置必须放在Zend的内容配置前面。由于Zend仅支持到PHP5.2,所以现在一般也不会配置Zend了,可以不用考虑Zend了。
7、测试
(1)确认/tmp/eaccelerator下只有目录,没有文件(说明还没有缓存)
find /tmp/eaccelerator/ -type f
(2)通过访问动态页面phpinfo.php查看eaccelerator缓存是否生效
LNMP:
http://www.abc.org/phpinfo.php
LAMP:
http://192.168.188.99/phpinfo.php
(3)再次查看/tmp/eaccelerator目录,还是没有文件
find /tmp/eaccelerator/ -type f
(4)重启apache服务和php-fpm服务
Apache:
/application/apache/bin/apachectl graceful
Nginx:
kill -USR2 `cat /application/php/logs/php-fpm.pid` #通过kill+信息量来重启相关服务
(5)再次通过访问动态页面phpinfo.php
LNMP:
http://www.abc.org/phpinfo.php
LAMP:
http://192.168.188.99/phpinfo.php
(6)再次查看/tmp/eaccelerator目录,出现缓存文件
find /tmp/eaccelerator/ -type f
/tmp/eaccelerator/0/5/eaccelerator-1502.1022381
八、配置和测试PHP操作码缓存:XCache
1、说明
eAccelerator和XCache有冲突,只能使用一个。该例是在Apache环境下使用XCache,所以必须将php.ini中的[eaccelerator]模块内容注释掉。
vi /wddg/tools/php-cache/xcache-1.3.2/xcache.ini
:set nu #打开行
(1)注释第3行的zend_extension
;zend_extension =/usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so
(2)注释第6行的zend_extension_ts
;zend_extension_ts = c:/php/extensions/php_xcache.dll
(3)打开第8行的xcache.so
修改前:;extension = xcache.so
修改后:extension = xcache.so
(4)修改第25行的xcache.size,指定缓存大小
修改前:xcache.size = 60M
修改后:xcache.size = 128M
(5)修改第27行的xcache.count,指定将 cache 切分成多少块
修改前:xcache.count = 1
修改后:xcache.count = 2
说明:此项根据cat /proc/cpuinfo | grep -cprocessor的结果来配置
(6)修改第31行的xcache.ttl,指定缓存生效的时间(0=永不过期)
修改前:xcache.ttl = 0
修改后:xcache.ttl = 86400
(7)修改第33行的xcache.gc_interval,指定回收的间隔
修改前:xcache.gc_interval = 0
修改后:xcache.gc_interval = 3600
(8)修改第36行的xcache.var_size,检查过期项目,回收内存空间的间隔
修改前:xcache.var_size = 4M
修改后:xcache.var_size = 16M
3、注释eaccelerator
;[eaccelerator]
;extension=eaccelerator.so
;eaccelerator.shm_size=”64″
;eaccelerator.cache_dir=”/tmp/eaccelerator”
;eaccelerator.enable=”1″
;eaccelerator.optimizer=”1″
;eaccelerator.check_mtime=”1″
;eaccelerator.debug=”0″
;eaccelerator.filter=””
;eaccelerator.shm_max=”0″
;eaccelerator.shm_ttl=”3600″
;eaccelerator.shm_prune_period=”3600″
;eaccelerator.shm_only=”0″
;eaccelerator.compress=”1″
;eaccelerator.compress_level=”9″
4、将XCache源安装目录中的xcache.ini文件内容拷贝到php.ini最后面
cat /wddg/tools/php-cache/xcache-1.3.2/xcache.ini >> /application/php/lib/php.ini
5、检查配置是否成功
/application/php/bin/php -v
6、重启apache服务
/application/apache/bin/apachectl graceful
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8582 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!