<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>深度VPS &#187; VPS优化</title>
	<atom:link href="http://www.deepvps.com/category/optimize/feed" rel="self" type="application/rss+xml" />
	<link>http://www.deepvps.com</link>
	<description>专注VPS技术，关注前端技术</description>
	<lastBuildDate>Thu, 09 Feb 2012 07:55:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>VPS服务器性能 压力测试工具 http_load、webbench、ab、Siege使用教程</title>
		<link>http://www.deepvps.com/webserver-test-tools.html</link>
		<comments>http://www.deepvps.com/webserver-test-tools.html#comments</comments>
		<pubDate>Mon, 19 Apr 2010 15:30:01 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS优化]]></category>
		<category><![CDATA[ab]]></category>
		<category><![CDATA[http_load]]></category>
		<category><![CDATA[Siege]]></category>
		<category><![CDATA[webbench]]></category>
		<category><![CDATA[使用教程]]></category>
		<category><![CDATA[压力测试工具]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=400</guid>
		<description><![CDATA[一、http_load
程序非常小，解压后也不到100K
http_load以并行复用的方式运行，用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工
具，它可以以一个单一的进程运行，一般不会把客户机搞死。还可以测试HTTPS类的网站请求。
下载地址：http://deepvps.googlecode.com/files/http_load-12mar2006.tar.gz
安装很简单
#tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make &#38;&#38; make install
命令格式：http_load  -p 并发访问进程数  -s 访问时间  需要访问的URL文件
参数其实可以自由组合，参数之间的选择并没有什么限制。比如你写成http_load -parallel 5 -seconds
300 urls.txt也是可以的。我们把参数给大家简单说明一下。
-parallel 简写-p ：含义是并发的用户进程数。
-fetches 简写-f ：含义是总计的访问次数
-rate    简写-p ：含义是每秒的访问频率
-seconds简写-s ：含义是总计的访问时间
准备URL文件：urllist.txt，文件格式是每行一个URL，URL最好超过50－100个测试效果比较好。文件格式
例如：
http_load -p 30 -s 60  urllist.txt
参数了解了，我们来看运行一条命令来看看它的返回结果
命令：% ./http_load -rate 5 -seconds 10 urls说明执行了一个持续时间10秒的测试，每秒的频率为5。
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274
fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first
-response: 63.5362 mean, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>一、http_load</strong></p>
<p>程序非常小，解压后也不到100K</p>
<p>http_load以并行复用的方式运行，用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工</p>
<p>具，它可以以一个单一的进程运行，一般不会把客户机搞死。还可以测试HTTPS类的网站请求。</p>
<p>下载地址：<a href="http://deepvps.googlecode.com/files/http_load-12mar2006.tar.gz">http://deepvps.googlecode.com/files/http_load-12mar2006.tar.gz</a><span id="more-400"></span></p>
<p>安装很简单<br />
#tar zxvf http_load-12mar2006.tar.gz<br />
#cd http_load-12mar2006<br />
#make &amp;&amp; make install</p>
<p>命令格式：http_load  -p 并发访问进程数  -s 访问时间  需要访问的URL文件</p>
<p>参数其实可以自由组合，参数之间的选择并没有什么限制。比如你写成http_load -parallel 5 -seconds</p>
<p>300 urls.txt也是可以的。我们把参数给大家简单说明一下。<br />
-parallel 简写-p ：含义是并发的用户进程数。<br />
-fetches 简写-f ：含义是总计的访问次数<br />
-rate    简写-p ：含义是每秒的访问频率<br />
-seconds简写-s ：含义是总计的访问时间</p>
<p>准备URL文件：urllist.txt，文件格式是每行一个URL，URL最好超过50－100个测试效果比较好。文件格式</p>
<p>例如：</p>
<p>http_load -p 30 -s 60  urllist.txt<br />
参数了解了，我们来看运行一条命令来看看它的返回结果<br />
命令：% ./http_load -rate 5 -seconds 10 urls说明执行了一个持续时间10秒的测试，每秒的频率为5。</p>
<p>49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274</p>
<p>fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first</p>
<p>-response: 63.5362 mean, 81.624 max, 57.803 minHTTP response codes: code 200 &#8212; 49 </p>
<p>结果分析：<br />
1．49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds<br />
说明在上面的测试中运行了49个请求，最大的并发进程数是2，总计传输的数据是289884bytes，运行的时间是10.0148秒<br />
2．5916 mean bytes/connection说明每一连接平均传输的数据量289884/49=5916<br />
3．4.89274 fetches/sec, 28945.5 bytes/sec<br />
说明每秒的响应请求为4.89274，每秒传递的数据为28945.5 bytes/sec<br />
4．msecs/connect: 28.8932 mean, 44.243 max, 24.488 min说明每连接的平均响应时间是28.8932 msecs，最大的响应时间44.243 msecs，最小的响应时间24.488 msecs<br />
5．msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min<br />
6、HTTP response codes: code 200 &#8212; 49     说明打开响应页面的类型，如果403的类型过多，那可能要注意是否系统遇到了瓶颈。</p>
<p>特殊说明：<br />
测试结果中主要的指标是 fetches/sec、msecs/connect 这个选项，即服务器每秒能够响应的查询次数，用这个指标来衡量性能。似乎比 apache的ab准确率要高一些，也更有说服力一些。<br />
Qpt-每秒响应用户数和response time，每连接响应用户时间。<br />
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析，我们还需要对服务器的cpu、men进行分析，才能得出结论</p>
<p><strong>二、webbench</strong></p>
<p>webbench是Linux下的一个网站压力测试工具，最多可以模拟3万个并发连接去测试网站的负载能力。下载地址可以到google搜，我这里给出一个<br />
下载地址：<a href="http://deepvps.googlecode.com/files/webbench-1.5.tar.gz">http://deepvps.googlecode.com/files/webbench-1.5.tar.gz</a></p>
<p>这个程序更小，解压后不到50K，呵呵<br />
安装非常简单<br />
#tar zxvf webbench-1.5.tar.gz<br />
#cd webbench-1.5<br />
#make &amp;&amp; make install<br />
会在当前目录生成webbench可执行文件，直接可以使用了</p>
<p>用法：</p>
<p>webbench -c 并发数 -t 运行测试时间 URL<br />
如：<br />
webbench -c 5000 -t 120  <a href="http://www.xxx.com/">http://www.xxx.com</a></p>
<p><strong>三、ab</strong><br />
ab是apache自带的一款功能强大的测试工具。安装了apache一般就自带了，用法可以查看它的说明</p>
<p>$ ./ab<br />
./ab: wrong number of arguments<br />
Usage: ./ab [options] [http://]hostname[:port]/path<br />
Options are:<br />
-n requests Number of requests to perform<br />
-c concurrency Number of multiple requests to make<br />
-t timelimit Seconds to max. wait for responses<br />
-p postfile File containing data to POST<br />
-T content-type Content-type header for POSTing<br />
-v verbosity How much troubleshooting info to print<br />
-w Print out results in HTML tables<br />
-i Use HEAD instead of GET<br />
-x attributes String to insert as table attributes<br />
-y attributes String to insert as tr attributes<br />
-z attributes String to insert as td or th attributes<br />
-C attribute Add cookie, eg. &#8216;Apache=1234. (repeatable)<br />
-H attribute Add Arbitrary header line, eg. &#8216;Accept-Encoding: gzip&#8217;<br />
Inserted after all normal header lines. (repeatable)<br />
-A attribute Add Basic WWW Authentication, the attributes<br />
are a colon separated username and password.<br />
-P attribute Add Basic Proxy Authentication, the attributes<br />
are a colon separated username and password.<br />
-X proxy:port Proxyserver and port number to use<br />
-V Print version number and exit<br />
-k Use HTTP KeepAlive feature<br />
-d Do not show percentiles served table.<br />
-S Do not show confidence estimators and warnings.<br />
-g filename Output collected data to gnuplot format file.<br />
-e filename Output CSV file with percentages served<br />
-h Display usage information (this message)<br />
参数众多，一般我们用到的是-n 和-c<br />
例如：<br />
./ab -c 1000 -n 100  <a href="http://www.xxx.com/index.php">http://www.xxx.com/index.php</a></p>
<p>这个表示同时处理1000个请求并运行100次index.php文件.<br />
<strong></strong></p>
<p><strong>四、Siege<br />
</strong>一款开源的压力测试工具，可以根据配置对一个WEB站点进行多用户的并发访问，记录每个用户所有请求过程的相应时间，并在一定数量的并发访问下重复进行。<br />
官方：<a href="http://www.joedog.org/">http://www.joedog.org/</a><br />
Siege下载：<a href="http://deepvps.googlecode.com/files/siege-2.67.tar.gz">http://deepvps.googlecode.com/files/siege-2.67.tar.gz</a></p>
<p>解压：<br />
# tar -zxf siege-2.67.tar.gz<br />
进入解压目录：<br />
# cd siege-2.67/<br />
安装：<br />
#./configure ; make<br />
#make install</p>
<p>使用<br />
siege -c 200 -r 10 -f example.url<br />
-c是并发量，-r是重复次数。 url文件就是一个文本，每行都是一个url，它会从里面随机访问的。</p>
<p>example.url内容:</p>
<p><a href="http://www.licess.cn/">http://www.deepvps.com</a></p>
<p>结果说明<br />
Lifting the server siege… done.<br />
Transactions: 3419263 hits //完成419263次处理<br />
Availability: 100.00 % //100.00 % 成功率<br />
Elapsed time: 5999.69 secs //总共用时<br />
Data transferred: 84273.91 MB //共数据传输84273.91 MB<br />
Response time: 0.37 secs //相应用时1.65秒：显示网络连接的速度<br />
Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次处理：表示服务器后<br />
Throughput: 14.05 MB/sec //平均每秒传送数据<br />
Concurrency: 213.42 //实际最高并发数<br />
Successful transactions: 2564081 //成功处理次数<br />
Failed transactions: 11 //失败处理次数<br />
Longest transaction: 29.04 //每次传输所花最长时间<br />
Shortest transaction: 0.00 //每次传输所花最短时间</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/webserver-test-tools.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一个优化my.cnf 的脚本</title>
		<link>http://www.deepvps.com/my-cnf-optimizer-script.html</link>
		<comments>http://www.deepvps.com/my-cnf-optimizer-script.html#comments</comments>
		<pubDate>Thu, 25 Mar 2010 04:57:53 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS优化]]></category>
		<category><![CDATA[my.cnf]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[脚本]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=312</guid>
		<description><![CDATA[一个由MySQL职员写的优化脚本，可根据现有配置，系统配置，MySQL的运行情况给出优化建议。
官方地址：http://www.day32.com/MySQL/
安装和运行：
通过SSH执行下列语句：
1. wget http://www.day32.com/MySQL/tuning-primer.sh
2. chmod 755 tuning-primer.sh
3. sh tuning-primer.sh
然后就可以看到结果了，根据建议就可以优化MySQL数据库的配置了。
]]></description>
			<content:encoded><![CDATA[<p>一个由MySQL职员写的优化脚本，可根据现有配置，系统配置，MySQL的运行情况给出优化建议。</p>
<p>官方地址：<a href="http://www.day32.com/MySQL/" target="_blank">http://www.day32.com/MySQL/</a></p>
<p><strong>安装和运行：</strong></p>
<p>通过SSH执行下列语句：</p>
<p>1. wget http://www.day32.com/MySQL/tuning-primer.sh<br />
2. chmod 755 tuning-primer.sh<br />
3. sh tuning-primer.sh</p>
<p>然后就可以看到结果了，根据建议就可以优化MySQL数据库的配置了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/my-cnf-optimizer-script.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UnixBench：测试Linux VPS性能</title>
		<link>http://www.deepvps.com/unixbench.html</link>
		<comments>http://www.deepvps.com/unixbench.html#comments</comments>
		<pubDate>Tue, 16 Mar 2010 01:09:00 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS优化]]></category>
		<category><![CDATA[UnixBench]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=253</guid>
		<description><![CDATA[UnixBench是一款不错的Linux下的VPS性能测试软件，现在说一下具体用法。
UnixBench 4.10 下载地址：http://licess.googlecode.com/files/unixbench-4.1.0-wht.tar.gz
 [root@noc ~]# wget http://licess.googlecode.com/files/unixbench-4.1.0-wht.tar.gz

 [root@noc ~]# tar xzf unixbench-4.1.0-wht.tar.gz
[root@noc ~]# ls
  unixbench-4.1.0-wht-2  unixbench-4.1.0-wht.tar.gz
[root@noc ~]# cd unixbench-4.1.0-wht-2/
[root@noc unixbench-4.1.0-wht-2]# make
如果遇到 Error: Please install /usr/bin/time. 错误提示
centos/fedora 下运行 yum install time
ubuntu/debian 下运行 apt-get install time
[root@noc unixbench-4.1.0-wht-2]# ./Run
以下是运行后显示的内容：
==============================================================
BYTE UNIX Benchmarks (Version 4.1-wht.2)
System — Linux noc.lnmp.org 2.6.18-92.1.13.el5.028stab059.6 #1 SMP Fri Nov 14 16:01:01 MSK 2008 i686 i686 i386 GNU/Linux
simfs                  5120000   [...]]]></description>
			<content:encoded><![CDATA[<p>UnixBench是一款不错的Linux下的VPS性能测试软件，现在说一下具体用法。</p>
<p>UnixBench 4.10 下载地址：<a href="http://licess.googlecode.com/files/unixbench-4.1.0-wht.tar.gz">http://licess.googlecode.com/files/unixbench-4.1.0-wht.tar.gz</a></p>
<p> [root@noc ~]# wget <a href="http://licess.googlecode.com/files/unixbench-4.1.0-wht.tar.gz">http://licess.googlecode.com/files/unixbench-4.1.0-wht.tar.gz</a></p>
<p><span id="more-253"></span></p>
<p> [root@noc ~]# tar xzf unixbench-4.1.0-wht.tar.gz<br />
[root@noc ~]# ls<br />
  unixbench-4.1.0-wht-2  unixbench-4.1.0-wht.tar.gz</p>
<p>[root@noc ~]# cd unixbench-4.1.0-wht-2/<br />
[root@noc unixbench-4.1.0-wht-2]# make<br />
如果遇到 Error: Please install /usr/bin/time. 错误提示<br />
centos/fedora 下运行 yum install time<br />
ubuntu/debian 下运行 apt-get install time</p>
<p>[root@noc unixbench-4.1.0-wht-2]# ./Run</p>
<p>以下是运行后显示的内容：</p>
<p>==============================================================<br />
BYTE UNIX Benchmarks (Version 4.1-wht.2)<br />
System — Linux noc.lnmp.org 2.6.18-92.1.13.el5.028stab059.6 #1 SMP Fri Nov 14 16:01:01 MSK 2008 i686 i686 i386 GNU/Linux<br />
simfs                  5120000   1581972   3538028  31% /</p>
<p>Start Benchmark Run: Wed Feb  4 05:11:25 PST 2009<br />
 05:11:25 up 20 days, 21:26,  1 user,  load average: 0.00, 0.00, 0.00</p>
<p>End Benchmark Run: Wed Feb  4 05:21:40 PST 2009<br />
 05:21:40 up 20 days, 21:37,  1 user,  load average: 15.46, 6.32, 2.72<br />
                     INDEX VALUES<br />
TEST                                        BASELINE     RESULT      INDEX</p>
<p>Dhrystone 2 using register variables        376783.7 23797779.3      631.6<br />
Double-Precision Whetstone                      83.1     1407.7      169.4<br />
Execl Throughput                               188.3    10095.2      536.1<br />
File Copy 1024 bufsize 2000 maxblocks         2672.0   204163.0      764.1<br />
File Copy 256 bufsize 500 maxblocks           1077.0    74664.0      693.3<br />
File Read 4096 bufsize 8000 maxblocks        15382.0  1629641.0     1059.4<br />
Pipe Throughput                             111814.6  3058960.1      273.6<br />
Pipe-based Context Switching                 15448.6   887966.3      574.8<br />
Process Creation                               569.3    26803.0      470.8<br />
Shell Scripts (8 concurrent)                    44.8     2503.6      558.8<br />
System Call Overhead                        114433.5  2409758.4      210.6<br />
                                                                 =========<br />
     FINAL SCORE                                                     475.4<br />
[root@noc unixbench-4.1.0-wht-2]#</p>
<p>我的VPS是<a href="http://www.deepvps.com/go/burst" target="_blank">BurstNET</a>的，内存是256MB，分数是475.4，自己感觉这个分数还不错。快去测试一下你的VPS吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/unixbench.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VPS优化之添加swap交换分区</title>
		<link>http://www.deepvps.com/vps-add-swap.html</link>
		<comments>http://www.deepvps.com/vps-add-swap.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 08:45:09 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS优化]]></category>
		<category><![CDATA[OpenVZ]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=235</guid>
		<description><![CDATA[相信很多使用VPS的朋友和我一样，没有太多的米买更多的内存，通常使用swap交换分区来给VPS提高一下性能。
下面说一下VPS添加swap交换分区的方法(只有Xen的VPS可以，OpenVZ不支持添加swap)。

1、进入一个目录

cd /var/

2、获取256M的文件块：

dd if=/dev/zero of=swapfile bs=1024 count=262144

3、创建swap文件

/sbin/mkswap swapfile

4、激活swap文件

/sbin/swapon swapfile

5、查看一下swap是否正确：

/sbin/swapon -s

6、加到fstab文件中让系统引导时自动启动

vi /etc/fstab

在末尾增加以下内容：

var/swapfile swap swap defaults 0 0

也可以执行如下命令，感觉这样更方便

echo &#34;/var/swapfile swap swap defaults 0 0&#34; &#38;gt;&#38;gt;/etc/fstab

顺便附上DD命令的参数介绍：
dd命令
功能：把指定的输入文件拷贝到指定的输出文件中，并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件，再把这个寄存文件写入第二张软盘上，完成diskcopy的功能。需要注意的是，应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。
语法：dd [选项]
if =输入文件（或设备名称）。
of =输出文件（或设备名称）。
ibs = bytes 一次读取bytes字节，即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节，即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数（等于设置ibs和obs）。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。

]]></description>
			<content:encoded><![CDATA[<p>相信很多使用<a href="http://www.deepvps.com/" target="_blank">VPS</a>的朋友和我一样，没有太多的米买更多的内存，通常使用swap交换分区来给VPS提高一下性能。</p>
<p>下面说一下VPS添加swap交换分区的方法(<strong>只有Xen的VPS可以，OpenVZ不支持添加swap</strong>)。<br />
<span id="more-235"></span><br />
1、进入一个目录</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">cd /var/</pre></div></div>

<p>2、获取256M的文件块：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">dd if=/dev/zero of=swapfile bs=1024 count=262144</pre></div></div>

<p>3、创建swap文件</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">/sbin/mkswap swapfile</pre></div></div>

<p>4、激活swap文件</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">/sbin/swapon swapfile</pre></div></div>

<p>5、查看一下swap是否正确：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">/sbin/swapon -s</pre></div></div>

<p>6、加到fstab文件中让系统引导时自动启动</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">vi /etc/fstab</pre></div></div>

<p>在末尾增加以下内容：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">var/swapfile swap swap defaults 0 0</pre></div></div>

<p>也可以执行如下命令，感觉这样更方便</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">echo &quot;/var/swapfile swap swap defaults 0 0&quot; &amp;gt;&amp;gt;/etc/fstab</pre></div></div>

<p>顺便附上DD命令的参数介绍：<br />
dd命令<br />
功能：把指定的输入文件拷贝到指定的输出文件中，并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件，再把这个寄存文件写入第二张软盘上，完成diskcopy的功能。需要注意的是，应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。<br />
语法：dd [选项]</p>
<p>if =输入文件（或设备名称）。</p>
<p>of =输出文件（或设备名称）。</p>
<p>ibs = bytes 一次读取bytes字节，即读入缓冲区的字节数。</p>
<p>skip = blocks 跳过读入缓冲区开头的ibs*blocks块。</p>
<p>obs = bytes 一次写入bytes字节，即写入缓冲区的字节数。</p>
<p>bs = bytes 同时设置读/写缓冲区的字节数（等于设置ibs和obs）。</p>
<p>cbs = byte 一次转换bytes字节。</p>
<p>count=blocks 只拷贝输入的blocks块。</p>
<p><script src="http://china-addthis.googlecode.com/svn/trunk/addthis.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/vps-add-swap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>三款免费的PHP加速器：APC、eAccelerator、XCache比较</title>
		<link>http://www.deepvps.com/apc-eaccelerator-xcache.html</link>
		<comments>http://www.deepvps.com/apc-eaccelerator-xcache.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 01:07:55 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS优化]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[PECL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[XCache]]></category>
		<category><![CDATA[加速器]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=232</guid>
		<description><![CDATA[一、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 = &#8221;/usr/local/php/lib/php/extensions/PECL&#8221; 
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()信息中显示。
       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 = &#8221;16&#8243; 
eaccelerator.cache_dir = &#8221;/tmp/eaccelerator&#8221; 
eaccelerator.enable = &#8221;1&#8243; 
eaccelerator.optimizer = &#8221;1&#8243; 
eaccelerator.check_mtime = &#8221;1&#8243; 
eaccelerator.debug = &#8221;0&#8243; 
eaccelerator.filter = &#8221;" 
eaccelerator.shm_max = &#8221;0&#8243; 
eaccelerator.shm_ttl = &#8221;0&#8243; 
eaccelerator.prune_period = &#8221;0&#8243; 
eaccelerator.shm_only = &#8221;0&#8243; 
eaccelerator.compress = &#8221;1&#8243; 
eaccelerator.compress_level = &#8221;9&#8243; 

       创建缓存目录,重启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 = &#8221;admin&#8221; 
xcache.admin.pass = &#8221;(执行) echo ’(你的密码)’&#124;md5sum(得出的密文)&#8221; 
; 
xcache.size = 24M 
xcache.shm_scheme = &#8221;mmap&#8221; 
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 = &#8221;/tmp/xcache&#8221; 
xcache.coredump_directory = &#8221;" 
xcache.cacher = On 
xcache.stat = On 
xcache.optimizer = Off 
; 
xcache.coverager = On 
xcache.coveragedump_directory = &#8221;" 

    创建缓存目录，重启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, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>一、PHP加速器介绍</strong></p>
<p>        PHP加速器是一个为了提高PHP执行效率，从而缓存起PHP的操作码，这样PHP后面执行就不用解析转换了，可以直接调用PHP操作码，这样速度上就提高了不少。</p>
<p>        Apache中使用mod_php的请求、响应执行流程：</p>
<p>1、Apache接收请求。<br />
2、Apache传递请求给mod_php。<br />
3、mod_php定位磁盘文件，并加载到内存中。<br />
4、mod_php编译源代码成为opcode树。<br />
5、mod_php执行opcode树。</p>
<p><span id="more-232"></span></p>
<p>       PHP加速器相应的就是第四步，它的目的就是防止PHP每次请求都重复编译PHP代码，因为在高访问量的网站上，大量的编译往往没有执行速度快呢？所以这里面有个瓶颈就是PHP的重复编译既影响了速度又加载了服务器负载，为了解决此问题，PHP加速器就这样诞生了。</p>
<p><strong>二、PHP加速器安装与配置</strong></p>
<p>        <strong>1、安装配置APC</strong></p>
<p>             APC全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”,它是PHP PECL中的一个扩展，好像是facebook在使用它，下面开始安装（ubuntu环境）：       </p>
<div id="code">
<li>$wget http://pecl.php.net/get/APC-3.0.19.tgz </li>
<li>$tar xvzf APC-3.0.19.tgz </li>
<li>$cd APC-3.0.19/APC-3.0.19 </li>
<li>$/usr/local/php/bin/phpize </li>
<li>$./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config </li>
<li>$make </li>
<li>$sudo make install </li>
</div>
<p>      下面我们再配置APC,因为我的PECL扩展路径改变了，所以我得移动下编译好的文件：</p>
<div id="code">
<li>$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/local/php/lib/php/extensions/PECL </li>
</div>
<p>      然后我们再编辑php.ini文件进行配置，请把下面的代码加入到php.ini中即可：</p>
<div id="code">
<li>extension_dir = &#8221;/usr/local/php/lib/php/extensions/PECL&#8221; </li>
<li>extension = apc.so </li>
<li>; APC </li>
<li>apc.enabled = 1 </li>
<li>apc.shm_segments = 1 </li>
<li>apc.shm_size = 64 </li>
<li>apc.optimization = 1 </li>
<li>apc.num_files_hint = 0 </li>
<li>apc.ttl = 0 </li>
<li>apc.gc_ttl = 3600 </li>
<li>apc.cache_by_default = on </li>
</div>
<p>     这样重启apache就会在phpinfo()信息中显示。</p>
<p><strong>       2、安装配置eAccelerator</strong></p>
<p>          eAccelerator的前身其实是truck-mmcache，因为开发truk-mmcache的人被Zend给招安了，所以开发eAccelerator的人继承了truk-mmcache的一些特性，设计出eAccelerator加速器。安装如下：</p>
<div id="code">
<li>$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2 </li>
<li>$tar -jxf eaccelerator-0.9.5.tar.bz2 </li>
<li>$cd eaccelerator-0.9.5 </li>
<li>$/usr/local/php/bin/phpize </li>
<li>$./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config </li>
<li>$make </li>
<li>$sudo make install </li>
<li>$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL</li>
</div>
<p>        将下面代码加入php.ini文件中</p>
<div id="code">
<li>extension = eaccelerator.so </li>
<li>; eAccelerator </li>
<li>eaccelerator.shm_size = &#8221;16&#8243; </li>
<li>eaccelerator.cache_dir = &#8221;/tmp/eaccelerator&#8221; </li>
<li>eaccelerator.enable = &#8221;1&#8243; </li>
<li>eaccelerator.optimizer = &#8221;1&#8243; </li>
<li>eaccelerator.check_mtime = &#8221;1&#8243; </li>
<li>eaccelerator.debug = &#8221;0&#8243; </li>
<li>eaccelerator.filter = &#8221;" </li>
<li>eaccelerator.shm_max = &#8221;0&#8243; </li>
<li>eaccelerator.shm_ttl = &#8221;0&#8243; </li>
<li>eaccelerator.prune_period = &#8221;0&#8243; </li>
<li>eaccelerator.shm_only = &#8221;0&#8243; </li>
<li>eaccelerator.compress = &#8221;1&#8243; </li>
<li>eaccelerator.compress_level = &#8221;9&#8243; </li>
</div>
<p>       创建缓存目录,重启apache</p>
<div id="code">
<li>$sudo mkdir /tmp/eaccelerator </li>
<li>$sudo chmod 777 /tmp/eaccelerator </li>
<li>$sudo /usr/local/apache/apachectl restart</li>
</div>
<p>      在phpinfo()检查是否安装成功.<strong> </strong></p>
<p><strong>    3、安装配置XCache</strong></p>
<p>      XCache作为国人自己开发的东西，做小菜鸟的我也感到骄傲，而且XCache无论在速度还是性能上都做的不错。下面就赶紧让我们品尝它吧！</p>
<div id="code">
<li>$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz </li>
<li>$tar xvzf xcache-1.2.2.tar.gz </li>
<li>$cd xcache-1.2.2 </li>
<li>$/usr/local/php/bin/phpize </li>
<li>$./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config </li>
<li>$make </li>
<li>$sudo make install </li>
<li>$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL</li>
</div>
<p>     在php.ini添加配置信息：</p>
<div id="code">
<li>extension = xcache.so </li>
<li>; xcache </li>
<li>xcache.admin.user = &#8221;admin&#8221; </li>
<li>xcache.admin.pass = &#8221;(执行) echo ’(你的密码)’|md5sum(得出的密文)&#8221; </li>
<li>; </li>
<li>xcache.size = 24M </li>
<li>xcache.shm_scheme = &#8221;mmap&#8221; </li>
<li>xcache.count = 2 </li>
<li>xcache.slots = 8k </li>
<li>xcache.ttl = 0 </li>
<li>xcache.gc_interval = 0 </li>
<li> </li>
<li>xcache.var_size = 8M </li>
<li>xcache.var_count = 1 </li>
<li>xcache.var_slots = 8k </li>
<li>xcache.var_ttl = 0 </li>
<li>xcache.var_maxttl = 0 </li>
<li>xcache.var_gc_interval = 300 </li>
<li>xcache.test = Off </li>
<li>xcache.readonly_protection = On </li>
<li>xcache.mmap_path = &#8221;/tmp/xcache&#8221; </li>
<li>xcache.coredump_directory = &#8221;" </li>
<li>xcache.cacher = On </li>
<li>xcache.stat = On </li>
<li>xcache.optimizer = Off </li>
<li>; </li>
<li>xcache.coverager = On </li>
<li>xcache.coveragedump_directory = &#8221;" </li>
</div>
<p>    创建缓存目录，重启apache</p>
<div id="code">
<li>$sudo mkdir /tmp/xcache </li>
<li>$sudo chmod 777 /tmp/xcache </li>
<li>$sudo /usr/local/apache/bin/apachectl restart </li>
</div>
<p>    去查看phpinfo()信息吧！</p>
<p><strong>三、PHP加速器测试</strong></p>
<p><strong>    1、测试环境</strong></p>
<p>        <strong>硬件</strong>:   AMD Athlon 64 X2 Dual Core Processor 4400+ @ 2.2GHz  CPU,  2GB 内存. 160GB SATA 硬盘</p>
<p>        <strong>软件</strong>:   Linux Ubuntu server Gutsy 7.10, Apache 2.2.4, MySQL 5.0.45 和 PHP 5.2.3</p>
<p>        <strong>测试指令</strong>:  ab -c5 -n3000 http://example.com/      (我们使用的是Apache Benchmark (ab) 工具，并发连接为5，3000次请求)</p>
<p>    <strong>2、测试结果</strong></p>
<p>       <strong>无任何加速器</strong>:</p>
<div id="code">
<li>Document Path:          / </li>
<li>Document Length:        21757 bytes </li>
<li>Concurrency Level:      5 </li>
<li>Time taken for tests:   288.255212 seconds </li>
<li>Complete requests:      3000 </li>
<li>Failed requests:        0 </li>
<li>Write errors:           0 </li>
<li>Total transferred:      66777000 bytes </li>
<li>HTML transferred:       65271000 bytes </li>
<li>Requests per second:    10.41 [#/sec] (mean) </li>
<li>Time per request:       480.425 [ms] (mean) </li>
<li>Time per request:       96.085 [ms] (mean, across all concurrent requests) </li>
<li>Transfer rate:          226.23 [Kbytes/sec] received </li>
<li>Connection Times (ms) </li>
<li>min  mean[+/-sd] median   max </li>
<li>Connect:        0    0   0.5      0      19 </li>
<li>Processing:   181  479 186.0    444    1822 </li>
<li>Waiting:      166  461 184.7    427    1708 </li>
<li>Total:        181  479 186.0    444    1822 </li>
<li>Percentage of the requests served within a certain time (ms) </li>
<li>50%    444 </li>
<li>66%    525 </li>
<li>75%    577 </li>
<li>80%    619 </li>
<li>90%    732 </li>
<li>95%    819 </li>
<li>98%    946 </li>
<li>99%   1012 </li>
<li>100%   1822 (longest request)  </li>
</div>
<p>     <strong>APC加速器</strong>:   </p>
<div id="code">
<li>Document Path:          / </li>
<li>Document Length:        21757 bytes </li>
<li>Concurrency Level:      5 </li>
<li>Time taken for tests:   98.530068 seconds </li>
<li>Complete requests:      3000 </li>
<li>Failed requests:        0 </li>
<li>Write errors:           0 </li>
<li>Total transferred:      66777000 bytes </li>
<li>HTML transferred:       65271000 bytes </li>
<li>Requests per second:    30.45 [#/sec] (mean) </li>
<li>Time per request:       164.217 [ms] (mean) </li>
<li>Time per request:       32.843 [ms] (mean, across all concurrent requests) </li>
<li>Transfer rate:          661.84 [Kbytes/sec] received </li>
<li>Connection Times (ms) </li>
<li>min  mean[+/-sd] median   max </li>
<li>Connect:        0    0   0.0      0       2 </li>
<li>Processing:    58  163  71.2    155    2452 </li>
<li>Waiting:       53  158  69.6    150    2329 </li>
<li>Total:         58  163  71.2    155    2452 </li>
<li>Percentage of the requests served within a certain time (ms) </li>
<li>50%    155 </li>
<li>66%    178 </li>
<li>75%    193 </li>
<li>80%    204 </li>
<li>90%    235 </li>
<li>95%    258 </li>
<li>98%    285 </li>
<li>99%    302 </li>
<li>100%   2452 (longest request)  </li>
</div>
<p>     <strong> eAccelerator加速器</strong>:</p>
<div id="code">
<li>Document Path:          / </li>
<li>Document Length:        21757 bytes </li>
<li>Concurrency Level:      5 </li>
<li>Time taken for tests:   95.983986 seconds </li>
<li>Complete requests:      3000 </li>
<li>Failed requests:        0 </li>
<li>Write errors:           0 </li>
<li>Total transferred:      66777000 bytes </li>
<li>HTML transferred:       65271000 bytes </li>
<li>Requests per second:    31.26 [#/sec] (mean) </li>
<li>Time per request:       159.973 [ms] (mean) </li>
<li>Time per request:       31.995 [ms] (mean, across all concurrent requests) </li>
<li>Transfer rate:          679.39 [Kbytes/sec] received </li>
<li>Connection Times (ms) </li>
<li>min  mean[+/-sd] median   max </li>
<li>Connect:        0    0   0.1      0       3 </li>
<li>Processing:    57  159  91.3    148    3830 </li>
<li>Waiting:       50  152  89.8    142    3704 </li>
<li>Total:         57  159  91.3    148    3830 </li>
<li>Percentage of the requests served within a certain time (ms) </li>
<li>50%    148 </li>
<li>66%    174 </li>
<li>75%    193 </li>
<li>80%    205 </li>
<li>90%    239 </li>
<li>95%    263 </li>
<li>98%    289 </li>
<li>99%    309 </li>
<li>100%   3830 (longest request) </li>
</div>
<p>       <strong>XCache加速器</strong>:</p>
<div id="code">
<li>Document Path:          / </li>
<li>Document Length:        21757 bytes </li>
<li>Concurrency Level:      5 </li>
<li>Time taken for tests:   99.76300 seconds </li>
<li>Complete requests:      3000 </li>
<li>Failed requests:        0 </li>
<li>Write errors:           0 </li>
<li>Total transferred:      66777000 bytes </li>
<li>HTML transferred:       65271000 bytes </li>
<li>Requests per second:    30.28 [#/sec] (mean) </li>
<li>Time per request:       165.127 [ms] (mean) </li>
<li>Time per request:       33.025 [ms] (mean, across all concurrent requests) </li>
<li>Transfer rate:          658.19 [Kbytes/sec] received </li>
<li>Connection Times (ms) </li>
<li>min  mean[+/-sd] median   max </li>
<li>Connect:        0    0   0.0      0       2 </li>
<li>Processing:    59  164  83.4    155    3367 </li>
<li>Waiting:       52  156  66.4    148    1802 </li>
<li>Total:         59  164  83.4    155    3367 </li>
<li>Percentage of the requests served within a certain time (ms) </li>
<li>50%    155 </li>
<li>66%    178 </li>
<li>75%    196 </li>
<li>80%    206 </li>
<li>90%    237 </li>
<li>95%    263 </li>
<li>98%    287 </li>
<li>99%    305 </li>
<li>100%   3367 (longest request)  </li>
</div>
<p><strong>    3、结果摘要</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td> </td>
<td>请求时间(秒)</td>
<td>单次请求时间(毫秒)</td>
<td>最大内存占用(MB)</td>
<td>最小内存占用(MB)</td>
</tr>
<tr>
<td>None</td>
<td>10.41</td>
<td>96.08</td>
<td>24</td>
<td>24</td>
</tr>
<tr>
<td>APC</td>
<td>30.45</td>
<td>32.84</td>
<td>21</td>
<td>21</td>
</tr>
<tr>
<td>eAccelerator</td>
<td>31.26</td>
<td>31.99</td>
<td>23</td>
<td>18</td>
</tr>
<tr>
<td>XCache</td>
<td>30.28</td>
<td>33.02</td>
<td>29</td>
<td>19</td>
</tr>
</tbody>
</table>
<p><strong>四、PHP加速器比较结果总结</strong></p>
<p>     1、通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。</p>
<p>     2、通过测试得出使用加速器比无加速器在请求时间快了3倍左右。</p>
<p>     3、通过各个官方观察，XCache是更新最快的，这也说明最有发展的。</p>
<p>        以上是总结结果，你也许会问我到底用那个加速器好呢？我只能告诉你，首先，用一定比不用好，其次每个加速器还有一些可以调优的参数，所以要根据你的系统环境而定，然后，我个人觉得你可以详细研究下eAccelerator和XCache，这两款潜力还是很大的，最后我从比较专业的测试网站搞了一张结果图：</p>
<p>       <img src="http://www.deepvps.com/wp-content/uploads/auto_save_image/2010/03/011237dmd.jpg" alt="" width="642" height="541" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/apc-eaccelerator-xcache.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

