php unlink加入chomod_PHP加速器

news/2024/11/24 13:27:43/

一、PHP加速器介绍

PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP操作码,这样速度上就提高了不少。

Apache中使用mod_php的请求、响应执行流程:

1、Apache接收请求。

2、Apache传递请求给mod_php。

3、mod_php定位磁盘文件,并加载到内存中。

4、mod_php编译源代码成为opcode树。

5、mod_php执行opcode树。

PHP加速器相应的就是第四步,它的目的就是防止PHP每次请求都重复编译PHP代码,因为在高访问量的网站上,大量的编译往往没有执行速度快呢?所以这里面有个瓶颈就是PHP的重复编译既影响了速度又加载了服务器负载,为了解决此问题,PHP加速器就这样诞生了。

二、PHP加速器安装与配置

1、安装配置APC

APC全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”,它是PHP PECL中的一个扩展,好像是facebook在使用它,下面开始安装(ubuntu环境):

$wget http://pecl.php.net/get/APC-3.0.19.tgz

$tar xvzf APC-3.0.19.tgz

$cd APC-3.0.19/APC-3.0.19

$/usr/local/php/bin/phpize

$./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config

$make

$sudo make install

下面我们再配置APC,因为我的PECL扩展路径改变了,所以我得移动下编译好的文件:

$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/local/php/lib/php/extensions/PECL

然后我们再编辑php.ini文件进行配置,请把下面的代码加入到php.ini中即可:

extension_dir = "/usr/local/php/lib/php/extensions/PECL"

extension = apc.so

; APC

apc.enabled = 1

apc.shm_segments = 1

apc.shm_size = 64

apc.optimization = 1

apc.num_files_hint = 0

apc.ttl = 0

apc.gc_ttl = 3600

apc.cache_by_default = on

这样重启apache就会在phpinfo()信息中显示。

使用php apc模块需要注意的几点

在maillist中看到Rasmus的一段对于php APC模块的发言。作为APC的作者,他的见解应该是很有参考价值的。

Php代码

APC will probably be 20-30% faster, but if you are writing to it frequently it can cause problems. The APC cache is best for things that change very rarely. And by very rarely I mean days, not hours or minutes. Because of the way APC does an anonymous file-backed mmap where I unlink the file at startup to get process-death protection, it isn’t easy to get at the cache from a separate standalone command line script. That can be solved by mmap’ing slightly differently, but in the default config your approach won’t work. -Rasmus

就是说APC不适合用于频繁写的场合,你最好只用它来保存那种几天都不会更改的内容。否则出了莫名其妙的问题就不好怎么解释了。

在以前的应用中,我确实有将apc用在频繁写的场合,偶尔会出现内存耗尽,进而引起所有http请求卡死,形式一发不可收拾整个服务器当掉。所以现在我仅仅用apc来缓存opcode的php代码,不在程序中显式的调用它,算是相安无事。

2、安装配置eAccelerator

eAccelerator的前身其实是truck-mmcache,因为开发truk-mmcache的人被Zend给招安了,所以开发eAccelerator的人继承了truk-mmcache的一些特性,设计出eAccelerator加速器。安装如下:

$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2

$tar -jxf eaccelerator-0.9.5.tar.bz2

$cd eaccelerator-0.9.5

$/usr/local/php/bin/phpize

$./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config

$make

$sudo make install

$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL

将下面代码加入php.ini文件中

extension = eaccelerator.so

; eAccelerator

eaccelerator.shm_size = "16"

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 = "0"

eaccelerator.prune_period = "0"

eaccelerator.shm_only = "0"

eaccelerator.compress = "1"

eaccelerator.compress_level = "9"

创建缓存目录,重启apache

$sudo mkdir /tmp/eaccelerator

$sudo chmod 777 /tmp/eaccelerator

$sudo /usr/local/apache/apachectl restart

在phpinfo()检查是否安装成功.

3、安装配置XCache

XCache作为国人自己开发的东西,做小菜鸟的我也感到骄傲,而且XCache无论在速度还是性能上都做的不错。下面就赶紧让我们品尝它吧!

$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz

$tar xvzf xcache-1.2.2.tar.gz

$cd xcache-1.2.2

$/usr/local/php/bin/phpize

$./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config

$make

$sudo make install

$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL

在php.ini添加配置信息:

extension = xcache.so

; xcache

xcache.admin.user = "admin"

xcache.admin.pass = "(执行) echo ’(你的密码)’|md5sum(得出的密文)"

;

xcache.size = 24M

xcache.shm_scheme = "mmap"

xcache.count = 2

xcache.slots = 8k

xcache.ttl = 0

xcache.gc_interval = 0

xcache.var_size = 8M

xcache.var_count = 1

xcache.var_slots = 8k

xcache.var_ttl = 0

xcache.var_maxttl = 0

xcache.var_gc_interval = 300

xcache.test = Off

xcache.readonly_protection = On

xcache.mmap_path = "/tmp/xcache"

xcache.coredump_directory = ""

xcache.cacher = On

xcache.stat = On

xcache.optimizer = Off

;

xcache.coverager = On

xcache.coveragedump_directory = ""

创建缓存目录,重启apache

$sudo mkdir /tmp/xcache

$sudo chmod 777 /tmp/xcache

$sudo /usr/local/apache/bin/apachectl restart

去查看phpinfo()信息吧!

三、PHP加速器测试

1、测试环境

硬件: AMD Athlon 64 X2 Dual Core Processor 4400+ @ 2.2GHz CPU, 2GB 内存. 160GB SATA 硬盘

软件: Linux Ubuntu server Gutsy 7.10, Apache 2.2.4, MySQL 5.0.45 和 PHP 5.2.3

测试指令: ab -c5 -n3000 http://example.com/ (我们使用的是Apache Benchmark (ab) 工具,并发连接为5,3000次请求)

2、测试结果

无任何加速器:

Document Path: /

Document Length: 21757 bytes

Concurrency Level: 5

Time taken for tests: 288.255212 seconds

Complete requests: 3000

Failed requests: 0

Write errors: 0

Total transferred: 66777000 bytes

HTML transferred: 65271000 bytes

Requests per second: 10.41 [#/sec] (mean)

Time per request: 480.425 [ms] (mean)

Time per request: 96.085 [ms] (mean, across all concurrent requests)

Transfer rate: 226.23 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.5 0 19

Processing: 181 479 186.0 444 1822

Waiting: 166 461 184.7 427 1708

Total: 181 479 186.0 444 1822

Percentage of the requests served within a certain time (ms)

50% 444

66% 525

75% 577

80% 619

90% 732

95% 819

98% 946

99% 1012

100% 1822 (longest request)

APC加速器:

Document Path: /

Document Length: 21757 bytes

Concurrency Level: 5

Time taken for tests: 98.530068 seconds

Complete requests: 3000

Failed requests: 0

Write errors: 0

Total transferred: 66777000 bytes

HTML transferred: 65271000 bytes

Requests per second: 30.45 [#/sec] (mean)

Time per request: 164.217 [ms] (mean)

Time per request: 32.843 [ms] (mean, across all concurrent requests)

Transfer rate: 661.84 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.0 0 2

Processing: 58 163 71.2 155 2452

Waiting: 53 158 69.6 150 2329

Total: 58 163 71.2 155 2452

Percentage of the requests served within a certain time (ms)

50% 155

66% 178

75% 193

80% 204

90% 235

95% 258

98% 285

99% 302

100% 2452 (longest request)

eAccelerator加速器:

Document Path: /

Document Length: 21757 bytes

Concurrency Level: 5

Time taken for tests: 95.983986 seconds

Complete requests: 3000

Failed requests: 0

Write errors: 0

Total transferred: 66777000 bytes

HTML transferred: 65271000 bytes

Requests per second: 31.26 [#/sec] (mean)

Time per request: 159.973 [ms] (mean)

Time per request: 31.995 [ms] (mean, across all concurrent requests)

Transfer rate: 679.39 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.1 0 3

Processing: 57 159 91.3 148 3830

Waiting: 50 152 89.8 142 3704

Total: 57 159 91.3 148 3830

Percentage of the requests served within a certain time (ms)

50% 148

66% 174

75% 193

80% 205

90% 239

95% 263

98% 289

99% 309

100% 3830 (longest request)

XCache加速器:

Document Path: /

Document Length: 21757 bytes

Concurrency Level: 5

Time taken for tests: 99.76300 seconds

Complete requests: 3000

Failed requests: 0

Write errors: 0

Total transferred: 66777000 bytes

HTML transferred: 65271000 bytes

Requests per second: 30.28 [#/sec] (mean)

Time per request: 165.127 [ms] (mean)

Time per request: 33.025 [ms] (mean, across all concurrent requests)

Transfer rate: 658.19 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.0 0 2

Processing: 59 164 83.4 155 3367

Waiting: 52 156 66.4 148 1802

Total: 59 164 83.4 155 3367

Percentage of the requests served within a certain time (ms)

50% 155

66% 178

75% 196

80% 206

90% 237

95% 263

98% 287

99% 305

100% 3367 (longest request)

3、结果摘要

请求时间(秒)

单次请求时间(毫秒)

最大内存占用(MB)

最小内存占用(MB)

None

10.41

96.08

24

24

APC

30.45

32.84

21

21

eAccelerator

31.26

31.99

23

18

XCache

30.28

33.02

29

19

四、PHP加速器比较结果总结

1、通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。

2、通过测试得出使用加速器比无加速器在请求时间快了3倍左右。

3、通过各个官方观察,XCache是更新最快的,这也说明最有发展的。

以上是总结结果,你也许会问我到底用那个加速器好呢?我只能告诉你,首先,用一定比不用好,其次每个加速器还有一些可以调优的参数,所以要根据你的系统环境而定,然后,我个人觉得你可以详细研究下eAccelerator和XCache,这两款潜力还是很大的。


http://www.ppmy.cn/news/518581.html

相关文章

python未来前景_未来十年Python的前景会怎样

那样说的。聘请告白来看从社区上的,b后台和运维系统开辟的大部门的岗亭需求是we,是要求django的web后台又有大部门。 着此刻小学生都要起头学python了言语法式设想”科目.....这意味,thon没前途吗你还感觉学py? 识布局明白知,的…

linux dpdk,在Linux(CentOS)上部署DPDK------命令行方式

1.DPDK 简介 DPDK(Data Plane Development Kit)是数据平面开发工具包,由用于加速在各种CPU架构上运行的数据包处理的库组成。 DPDK需要一定的网卡硬件支持,以Intel为例,支持以下网卡: e1000 (82540, 82545, 82546) e1000e (82571, 82572, 82573, 82574, 82583, ICH8, ICH9,…

巨头们纷纷涌入,DPU有何魔力?

自1950年代以来,中央处理器“ CPU”一直是每台计算机或智能设备的核心;到1990年代以来,GPU或图形处理单元扮演了重要角色;所以,在过去的十年中,计算已经摆脱了PC和服务器的繁琐局限,CPU和GPU为庞…

DPVS安装配置、使用(1)

1 前言 这两天一直在看dpvs这块,从开始安装到启动dpvs,一路上遇到各种各样的坑。总结了一下,以供各位参考。 首先DPVS环境需要网卡能支持DPDK技术,由于本人使用的服务器用的intel的网卡,通过查看官方&#xff…

c语言中while(op),如何用C预处理器编写while循环?

好吧,这不是一个while循环,而是一个计数器循环,尽管如此,在干净的CPP中也可以循环(没有模板,也没有C ) #ifdef pad_always #define pad(p,f) p##0 #else #define pad0(p,not_used) p #define pad1(p,not_used) p##0 #d…

巡风探索

模块内容包括: ├─nascan │ │ NAScan.py # 网络资产信息抓取引擎 │ │ │ ├─lib │ │ cidr.py │ │ common.py 其他方法 │ │ icmp.py # ICMP发送类 │ │ log.py # 日志输出 │ │ mongo.py # 数据库连接 │ │ …

springboot dubbo应用的链路信息采集——skywalking运行环境搭建

本文已参与腾源会发起的「开源摘星计划」 视频教程一 skywalking8.7.0搭建之centos7安装 视频教程二 skywalking8.7.0搭建之esoap 安装规划 skywalking java agent用于采集链路信息,kafak用于信息缓存,skywalking oap cluster(Observabilit…

从芯片到系统:FPGA加速卡的发展历程与展望

https://www.toutiao.com/a6666758560585630220/ 来源:老石谈芯 半导体行业观察 一个重要的趋势 作为加速云数据中心的重要组件,FPGA已经开始了它在数据中心领域的广泛使用。除了像微软、亚马逊这样的大型云服务提供商之外,FPGA也逐渐开始进…