<?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"
	>

<channel>
	<title>吴昊的博客</title>
	<atom:link href="http://www.wuhao.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wuhao.com</link>
	<description></description>
	<pubDate>Thu, 31 Jul 2008 06:53:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>用CSS控制li标记样式:list-style-type各属性的含义</title>
		<link>http://www.wuhao.com/web/css-list-style-type</link>
		<comments>http://www.wuhao.com/web/css-list-style-type#comments</comments>
		<pubDate>Wed, 30 Jul 2008 07:35:26 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[WEB标准]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=56</guid>
		<description><![CDATA[语法：
list-style-type : disc  circle square decimal lower-roman upper-roman lower-alpha upper-alpha none  armenian cjk-ideographic georgian lower-greek hebrew hiragana hiragana-iroha  katakana katakana-iroha lower-latin upper-latin

参数：
disc : 　CSS1　实心圆
circle  : 　CSS1　空心圆
square : 　CSS1　实心方块
decimal : 　CSS1　阿拉伯数字
lower-roman :  　CSS1　小写罗马数字
upper-roman : 　CSS1　大写罗马数字
lower-alpha :  　CSS1　小写英文字母
upper-alpha : 　CSS1　大写英文字母
none : 　CSS1　不使用项目符号
armenian :  　CSS2　传统的亚美尼亚数字
cjk-ideographic : 　CSS2　浅白的表意数字
georgian :  　CSS2　传统的乔治数字
lower-greek : [...]]]></description>
			<content:encoded><![CDATA[<p>语法：</p>
<p class="code"><span style="background-color: #ffffff;">list-style-type : disc  circle square decimal lower-roman upper-roman lower-alpha upper-alpha none  armenian cjk-ideographic georgian lower-greek hebrew hiragana hiragana-iroha  katakana katakana-iroha lower-latin upper-latin</span></p>
<p class="code"><span id="more-56"></span></p>
<p>参数：</p>
<p class="code"><span style="background-color: #ffffff;">disc : 　CSS1　实心圆<br />
circle  : 　CSS1　空心圆<br />
square : 　CSS1　实心方块<br />
decimal : 　CSS1　阿拉伯数字<br />
lower-roman :  　CSS1　小写罗马数字<br />
upper-roman : 　CSS1　大写罗马数字<br />
lower-alpha :  　CSS1　小写英文字母<br />
upper-alpha : 　CSS1　大写英文字母<br />
none : 　CSS1　不使用项目符号<br />
armenian :  　CSS2　传统的亚美尼亚数字<br />
cjk-ideographic : 　CSS2　浅白的表意数字<br />
georgian :  　CSS2　传统的乔治数字<br />
lower-greek : 　CSS2　基本的希腊小写字母<br />
hebrew :  　CSS2　传统的希伯莱数字<br />
hiragana : 　CSS2　日文平假名字符<br />
hiragana-iroha :  　CSS2　日文平假名序号<br />
katakana : 　CSS2　日文片假名字符<br />
katakana-iroha :  　CSS2　日文片假名序号<br />
lower-latin : 　CSS2　小写拉丁字母<br />
upper-latin :  　CSS2　大写拉丁字母</span></p>
<p class="code"><span style="background-color: #ffffff;">说明：</span></p>
<p>设置或检索对象的列表项所使用的预设标记。</p>
<p>若list-style-image属***为none或指定图像不可用时，list-style-type属***将发生作用。</p>
<p>仅作用于具有display值等于list-item的对象（如li对象）。</p>
<p>注意：ol对象和ul对象的type特***为其后的所有列表项目（如li对象）指明列表属***。请参阅我的其他著作。</p>
<p>IE5.5尚不支持所有CSS2的值。</p>
<p>对应的脚本特***为listStyleType。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/web/css-list-style-type/feed</wfw:commentRss>
		</item>
		<item>
		<title>常见SEO术语</title>
		<link>http://www.wuhao.com/seo/term</link>
		<comments>http://www.wuhao.com/seo/term#comments</comments>
		<pubDate>Wed, 30 Jul 2008 07:31:26 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[SEO 搜索引擎优化]]></category>

		<category><![CDATA[术语]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=51</guid>
		<description><![CDATA[Algorithm 算法
算法是解决问题所形成的一种公司,在搜索引擎中算法是程序员编写的用于自动分析网站内容、结构和相关性的一组程序，来确定网站的质量和价值，为关键词搜索结果的排列提供依据。

backlinks (inbound  links) 导入连接
导入链接是由其他网站指向你网站的一个链接，和导出连接相反。导入链接的多少是搜索引擎，衡量一个网站是否受欢迎的其中一个。当然据说现在不怎么管用了。
conversion 转化
在搜索引擎营销售中，成功的引来大量的访问者不是最终目的。 这些访问者必须成为一个网站的顾客才有意义。
这个从访问者变为顾客的过程就是转化。
Doorway pages 门页
门页，也叫桥页和跳页，是纯粹为了某个特别的关键词获得搜索引擎的排名而设计的网页。这些网页一般不在网站导航中出现。
其实就是一些很不讲究内容排版，而是纯粹为了获得关键词排名，而欺骗搜索引擎的页面。通常会设计一个跳转链接或者其他方式指导访问者进入真实的网站。
Entry page 入口页
就是访问者进入你网站的那一页。
EXIT PAGE 出口页
就是访问者离开你网站的那一页。
Keywords  关键字词
这个就不要介绍了吧
KEYword density 关键词密度
这个也相信不用讲了吧；
link popularity 链接广泛度
搜索引擎检查一个网站有多少人愿意链接她，这些链接的网站质量是否优秀，来判断这个网站的可信度和权威性。 所谓的链接广泛度好象大概也就是这个意思吧。
outbound  links 导出链接
pageview 受访页面俩昂
Link farm 链接场
Paid listing 付费列表
]]></description>
			<content:encoded><![CDATA[<p>Algorithm 算法<br />
算法是解决问题所形成的一种公司,在搜索引擎中算法是程序员编写的用于自动分析网站内容、结构和相关性的一组程序，来确定网站的质量和价值，为关键词搜索结果的排列提供依据。</p>
<p><span id="more-51"></span></p>
<p>backlinks (inbound  links) 导入连接<br />
导入链接是由其他网站指向你网站的一个链接，和导出连接相反。导入链接的多少是搜索引擎，衡量一个网站是否受欢迎的其中一个。当然据说现在不怎么管用了。</p>
<p>conversion 转化<br />
在搜索引擎营销售中，成功的引来大量的访问者不是最终目的。 这些访问者必须成为一个网站的顾客才有意义。<br />
这个从访问者变为顾客的过程就是转化。</p>
<p>Doorway pages 门页<br />
门页，也叫桥页和跳页，是纯粹为了某个特别的关键词获得搜索引擎的排名而设计的网页。这些网页一般不在网站导航中出现。<br />
其实就是一些很不讲究内容排版，而是纯粹为了获得关键词排名，而欺骗搜索引擎的页面。通常会设计一个跳转链接或者其他方式指导访问者进入真实的网站。</p>
<p>Entry page 入口页<br />
就是访问者进入你网站的那一页。</p>
<p>EXIT PAGE 出口页<br />
就是访问者离开你网站的那一页。</p>
<p>Keywords  关键字词<br />
这个就不要介绍了吧</p>
<p>KEYword density 关键词密度<br />
这个也相信不用讲了吧；</p>
<p>link popularity 链接广泛度<br />
搜索引擎检查一个网站有多少人愿意链接她，这些链接的网站质量是否优秀，来判断这个网站的可信度和权威性。 所谓的链接广泛度好象大概也就是这个意思吧。</p>
<p>outbound  links 导出链接</p>
<p>pageview 受访页面俩昂</p>
<p>Link farm 链接场</p>
<p>Paid listing 付费列表</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/seo/term/feed</wfw:commentRss>
		</item>
		<item>
		<title>XCache在Win2003与IIS6下的成功配置方法与疑难解答</title>
		<link>http://www.wuhao.com/phps/xcache-iis</link>
		<comments>http://www.wuhao.com/phps/xcache-iis#comments</comments>
		<pubDate>Wed, 30 Jul 2008 07:29:30 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=48</guid>
		<description><![CDATA[ 
XCache介绍
XCache是一种新的php缓存器，经过本人测试，在Windows下效果比同类软件强很多。
实际测试效果如下（非科学方法）：
原网页平均执行时间: 0.13 秒
加速后网页平均执行时间: 0.03秒
原CPU占用率: 15% - 60%
加速后CPU占用率: 3% - 30% 

由上数据可以看出，使用这个加速器可以很大程度的降低CPU占用（但会造成更多的内存占用），并使网页执行时间缩短。
由于其他同类软件对Windows的支持不够好，所以选用XCache。
网上很多说明都不够详细，所以给大家写一篇。
安装与配置
首先下载XCache，网址为：
下载地址：http://xcache.lighttpd.net/wiki/Release-1.2.2
需要下载跟你php版本匹配的binaries  for Windows。
下载后解压，把php_xcache.dll放在php.ini中指定extension_dir中。
下面开始配置，打开php.ini。

添加(记得是添加,不要更换原来的zend_extension_ts参数)
Zend_extension_ts  = &#8220;($extension_dir)\php_xcache.dll&#8221;
本人配置的时候，把($extension_dir)替换成绝对路径才行的。
（为什么不用extension，一会再说）
添加
[xcache.admin]
xcache.admin.enable_auth = Off
xcache.admin.user = &#8220;UserName&#8221;
xcache.admin.pass = &#8220;PassWord&#8221;
[xcache]
xcache.shm_scheme =  &#8220;mmap&#8221;
xcache.size = 64M
xcache.count  = 4
xcache.slots = 64K
xcache.ttl = 1800
xcache.gc_interval =  1800
xcache.var_size = 8M
xcache.var_count = 4
xcache.var_slots  = 64K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = [...]]]></description>
			<content:encoded><![CDATA[<div class="textggad" style="float: right;"><script type="text/javascript"><!--
	&lt;! 
	google_ad_client = "pub-7019741517173377";
	/* 300x250, 创建于 08-6-26 */
	google_ad_slot = "6326023925";
	google_ad_width = 300;
	google_ad_height = 250;
	// &gt;
// --></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></div>
<p><strong>XCache介绍</strong></p>
<p>XCache是一种新的php缓存器，经过本人测试，在Windows下效果比同类软件强很多。</p>
<p>实际测试效果如下（非科学方法）：<br />
<span style="color: #0000ff;">原网页平均执行时间: 0.13 秒<br />
加速后网页平均执行时间: 0.03秒<br />
原CPU占用率: 15% - 60%<br />
加速后CPU占用率: 3% - 30% </span></p>
<p><span id="more-48"></span></p>
<p>由上数据可以看出，使用这个加速器可以很大程度的降低CPU占用（但会造成更多的内存占用），并使网页执行时间缩短。</p>
<p>由于其他同类软件对Windows的支持不够好，所以选用XCache。</p>
<p>网上很多说明都不够详细，所以给大家写一篇。</p>
<p><strong>安装与配置</strong></p>
<p>首先下载XCache，网址为：<br />
下载地址：<a href="http://xcache.lighttpd.net/wiki/Release-1.2.2" target="_blank">http://xcache.lighttpd.net/wiki/Release-1.2.2</a></p>
<p>需要下载跟你php版本匹配的binaries  for Windows。</p>
<p>下载后解压，把<span style="color: #ff0000;">php_xcache.dll</span>放在<span style="color: #ff0000;">php.ini中指定extension_dir中</span>。</p>
<p>下面开始配置，打开php.ini。<br />
<a name="entrymore"></a><br />
添加(记得是添加,不要更换原来的zend_extension_ts参数)<br />
Zend_extension_ts  = &#8220;<span style="color: #800080;">($extension_dir)</span>\php_xcache.dll&#8221;</p>
<p><span style="color: #0000ff;">本人配置的时候，把($extension_dir)替换成绝对路径才行的。</span></p>
<p>（为什么不用extension，一会再说）</p>
<p>添加</p>
<p>[xcache.admin]<br />
xcache.admin.enable_auth = <span style="color: #0000ff;">Off</span><br />
xcache.admin.user = &#8220;<span style="color: #0000ff;">UserName</span>&#8221;<br />
xcache.admin.pass = &#8220;<span style="color: #0000ff;">PassWord</span>&#8221;<br />
[xcache]<br />
xcache.shm_scheme =  &#8220;mmap&#8221;<br />
xcache.size = <span style="color: #0000ff;">64M</span><br />
xcache.count  = <span style="color: #800080;">4</span><br />
xcache.slots = <span style="color: #4b0082;">64K</span><br />
xcache.ttl = 1800<br />
xcache.gc_interval =  1800<br />
xcache.var_size = <span style="color: #0000ff;">8M</span><br />
xcache.var_count = <span style="color: #800080;">4</span><br />
xcache.var_slots  = <span style="color: #4b0082;">64K</span><br />
xcache.var_ttl = 0<br />
xcache.var_maxttl = 0<br />
xcache.var_gc_interval = 300<br />
xcache.test = Off<br />
xcache.readonly_protection = Off<br />
xcache.mmap_path = &#8220;<span style="color: #800080;">xcache</span>&#8221;<br />
xcache.coredump_directory = &#8220;&#8221;<br />
xcache.cacher = On<br />
xcache.stat = Off<br />
xcache.optimizer = <span style="color: #800080;">Off</span><br />
[xcache.coverager]<br />
xcache.coverager =  Off<br />
xcache.coveragedump_directory = &#8220;&#8221;</p>
<p>需要修改的值已经用<span style="color: #0000ff;">蓝色</span>标出，说明如下：<br />
xcache.admin.enable_auth  　XCache后台是否需要验证（这个后台在刚才下载的XCache的admin目录中，可以自由处理）<br />
xcache.admin.user　XCache后台登陆用户名<br />
xcache.admin.pass　XCache后台登陆密码<br />
xcache.size　　　XCache的内存缓存大小，普通网站建议设置为64MB，如果是IDC服务器，可以设置成256MB<br />
xcache.count　　设置为CPU的数量（双核算2个，比如我的是两个双核Xeon 3.0，就设置为4）<br />
xcache.var_size<br />
xcache.var_count 　跟上两条一样<br />
xcache.mmap_path　　共享内存标识名，尽量用xcache，避免跟其它软件冲突<br />
xcache.optimizer　　优化器，如果没安装Zend可以开启。</p>
<p>至此配置完毕，重新启动IIS即可。</p>
<p>至于为什么不用extension，而用zend_extension_ts，因为这个发行版的xcache的接口是ZEND_API，直接用extension无法初始化。</p>
<p><strong>疑难解答</strong></p>
<p><span style="color: #4169e1;">1、phpinfo()中显示没有加载php_xcache.dll<br />
检查php_xcache.dll的NTFS权限是否正确，需要给网站用户（或者可以用Guests）只读权限。</span></p>
<p>2、出现php内存错误<br />
使用了extension调用php_xcache.dll，请尝试使用zend_extension_ts。</p>
<p>3、打开网页没有响应，出现错误  Fatal error: [Zend Optimizer] Zend Optimizer *** is incompatible with XCache  1.2.2<br />
这是因为安装了Zend导致，解决方法很简单，把调用php_xcache.dll的zend_extension_ts提到调用zend的前面。如：<br />
zend_extension_manager.optimizer_ts=&#8221;C:\Program  Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0&#8243;<br />
zend_extension_ts=&#8221;C:\php\ext\php_xcache.dll&#8221;<br />
zend_extension_ts=&#8221;C:\Program  Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll&#8221;</p>
<p>4、有待补充</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/phps/xcache-iis/feed</wfw:commentRss>
		</item>
		<item>
		<title>php缓冲器 xcache与eaccelerator性能测试对比</title>
		<link>http://www.wuhao.com/phps/xcache</link>
		<comments>http://www.wuhao.com/phps/xcache#comments</comments>
		<pubDate>Tue, 29 Jul 2008 22:25:40 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[xcache]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=36</guid>
		<description><![CDATA[随着PHP流行，PHP的执行效率也越来越被大家关注，可以选择的缓存器也是越来越多，从老的php-memcache到eaccelerator还有新兴的xcache。为了挑选一个合适的缓存器决定自己实测一下，看看哪个缓存器的效率更高，由于php-memcache很少有人用了现在只测试eaccelerator和xcache。

硬件配置：
CPU：Intel 2140（双核心）
内存：2G DDR667
硬盘：80G（IDE接口，2M缓存）
软件版本
系统：Mandriva 2008 free，apache-2.2.6，php-5.2.4，ZendOptimizer-3.3.0，mysql-5.0.45。
测试对象的版本：eaccelerator-0.9.5.2，xcache-1.2.1
eaccelerator与xcache都是手动编译安装，安装安装官方公布的安装步骤和参数，需要了解的可以登录他们的网站去看。考虑到对商业代码的支持，缓存器都安装为zend的扩展，同时两个缓存器的缓存大小都是64M（呵呵有点大一般16M就不小了）。测试的时候关于eaccelerator会测试两项，一项是默认的，一项是把eaccelerator的缓存目录放到tmpfs中，我叫他为eaccelerator的内存模式。关于tmpfs的情况可以看下这里http://lcuc.org.cn/node/304。
测试工具为ab，测试读取对象是phpMyAdmin-2.11.2，Discuz!_6.0.0_SC_GBK
phpMyAdmin部分
测试语句为：ab -n 100000 http://localhost/phpmyadmin
不安装任何缓存器
[root@mandriva phpmyadmin]# ab -n 100000 http://localhost/phpmyadmin
This is ApacheBench, Version 2.0.40-dev &#60;$Revision: 1.146 $&#62; apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished [...]]]></description>
			<content:encoded><![CDATA[<p>随着PHP流行，PHP的执行效率也越来越被大家关注，可以选择的缓存器也是越来越多，从老的php-memcache到eaccelerator还有新兴的xcache。为了挑选一个合适的缓存器决定自己实测一下，看看哪个缓存器的效率更高，由于php-memcache很少有人用了现在只测试eaccelerator和xcache。</p>
<p><span id="more-36"></span><br />
硬件配置：<br />
CPU：Intel 2140（双核心）<br />
内存：2G DDR667<br />
硬盘：80G（IDE接口，2M缓存）</p>
<p>软件版本<br />
系统：Mandriva 2008 free，apache-2.2.6，php-5.2.4，ZendOptimizer-3.3.0，mysql-5.0.45。<br />
测试对象的版本：eaccelerator-0.9.5.2，xcache-1.2.1</p>
<p>eaccelerator与xcache都是手动编译安装，安装安装官方公布的安装步骤和参数，需要了解的可以登录他们的网站去看。考虑到对商业代码的支持，缓存器都安装为zend的扩展，同时两个缓存器的缓存大小都是64M（呵呵有点大一般16M就不小了）。测试的时候关于eaccelerator会测试两项，一项是默认的，一项是把eaccelerator的缓存目录放到tmpfs中，我叫他为eaccelerator的内存模式。关于tmpfs的情况可以看下这里<a href="http://lcuc.org.cn/node/304">http://lcuc.org.cn/node/304</a>。</p>
<p>测试工具为ab，测试读取对象是phpMyAdmin-2.11.2，Discuz!_6.0.0_SC_GBK</p>
<p>phpMyAdmin部分</p>
<p>测试语句为：ab -n 100000 <a href="http://localhost/phpmyadmin">http://localhost/phpmyadmin</a></p>
<p>不安装任何缓存器</p>
<p>[root@mandriva phpmyadmin]# ab -n 100000 <a href="http://localhost/phpmyadmin">http://localhost/phpmyadmin</a><br />
This is ApacheBench, Version 2.0.40-dev &lt;$Revision: 1.146 $&gt; apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, <a href="http://www.zeustech.net/">http://www.zeustech.net/</a><br />
Copyright 2006 The Apache Software Foundation, <a href="http://www.apache.org/">http://www.apache.org/</a></p>
<p>Benchmarking localhost (be patient)<br />
Completed 10000 requests<br />
Completed 20000 requests<br />
Completed 30000 requests<br />
Completed 40000 requests<br />
Completed 50000 requests<br />
Completed 60000 requests<br />
Completed 70000 requests<br />
Completed 80000 requests<br />
Completed 90000 requests<br />
Finished 100000 requests</p>
<p>Server Software: Apache/2.2.6<br />
Server Hostname: localhost<br />
Server Port: 80</p>
<p>Document Path: /phpmyadmin<br />
Document Length: 337 bytes</p>
<p>Concurrency Level: 1<br />
Time taken for tests: 20.699322 seconds<br />
Complete requests: 100000<br />
Failed requests: 0<br />
Write errors: 0<br />
Non-2xx responses: 100000<br />
Total transferred: 59100000 bytes<br />
HTML transferred: 33700000 bytes<br />
Requests per second: 4831.08 [#/sec] (mean)<br />
Time per request: 0.207 [ms] (mean)<br />
Time per request: 0.207 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 2788.21 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
min mean[+/-sd] median max<br />
Connect: 0 0 0.0 0 0<br />
Processing: 0 0 1.2 0 294<br />
Waiting: 0 0 1.2 0 294<br />
Total: 0 0 1.2 0 294</p>
<p>Percentage of the requests served within a certain time (ms)<br />
50% 0<br />
66% 0<br />
75% 0<br />
80% 0<br />
90% 0<br />
95% 0<br />
98% 0<br />
99% 0<br />
100% 294 (longest request)<br />
主要的性能指标是Requests per second，为了看着方便，只在第一次的给出所有反馈，其他的都之提供Requests per second</p>
<p>结果：Requests per second: 4831.08 [#/sec] (mean)</p>
<p>eAccelerator<br />
结果：Requests per second: 4850.92 [#/sec] (mean)</p>
<p>eAccelerator 内存模式<br />
结果：Requests per second: 4690.77 [#/sec] (mean)</p>
<p>xcache<br />
结果：Requests per second: 4781.96 [#/sec] (mean)</p>
<p>发现eAccelerator与xcache可以同时安装，就也试验了一下。<br />
eAccelerator+xcache<br />
结果：Requests per second: 4791.29 [#/sec] (mean)</p>
<p>测试的结果是eAccelerator 内存模式胜出。不过这样似乎看不出缓存器的必要，同时phpMyAdmin也太单一了。下面开始对Discuz!_6.0.0_SC_GBK的请求测试，这样对国内的用户才更加有参考意义。</p>
<p>Discuz!部分<br />
说明：Discuz!默认安装，不带任何的数据，Discuz!自带了缓存功能不过默认没有开启，不影响测试的结果。</p>
<p>测试语句为：ab -n 100000 <a href="http://localhost/bbs/index.php">http://localhost/bbs/index.php</a><br />
针对Discuz!测试又增加了一句：ab -n 100000 -c 200 <a href="http://localhost/bbs/index.php">http://localhost/bbs/index.php</a><br />
超BT^_^</p>
<p>ab -n 100000</p>
<p>不安装任何缓存器</p>
<p>[root@mandriva bbs]# ab -n 100000 <a href="http://localhost/bbs/index.php">http://localhost/bbs/index.php</a><br />
This is ApacheBench, Version 2.0.40-dev &lt;$Revision: 1.146 $&gt; apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, <a href="http://www.zeustech.net/">http://www.zeustech.net/</a><br />
Copyright 2006 The Apache Software Foundation, <a href="http://www.apache.org/">http://www.apache.org/</a></p>
<p>Benchmarking localhost (be patient)<br />
Completed 10000 requests<br />
Completed 20000 requests<br />
Completed 30000 requests<br />
Completed 40000 requests<br />
Completed 50000 requests<br />
Completed 60000 requests<br />
Completed 70000 requests<br />
Completed 80000 requests<br />
Completed 90000 requests<br />
Finished 100000 requests</p>
<p>Server Software: Apache/2.2.6<br />
Server Hostname: localhost<br />
Server Port: 80</p>
<p>Document Path: /bbs/index.php<br />
Document Length: 9251 bytes</p>
<p>Concurrency Level: 1<br />
Time taken for tests: 2278.10424 seconds<br />
Complete requests: 100000<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 958900000 bytes<br />
HTML transferred: 925100000 bytes<br />
Requests per second: 43.90 [#/sec] (mean)<br />
Time per request: 22.780 [ms] (mean)<br />
Time per request: 22.780 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 411.07 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
min mean[+/-sd] median max<br />
Connect: 0 0 0.0 0 0<br />
Processing: 21 22 0.9 22 137<br />
Waiting: 14 21 0.6 21 40<br />
Total: 21 22 0.9 22 137</p>
<p>Percentage of the requests served within a certain time (ms)<br />
50% 22<br />
66% 22<br />
75% 22<br />
80% 23<br />
90% 23<br />
95% 23<br />
98% 24<br />
99% 24<br />
100% 137 (longest request)</p>
<p>结果：Requests per second: 43.90 [#/sec] (mean)</p>
<p>eAccelerator<br />
结果：Requests per second: 167.28 [#/sec] (mean)</p>
<p>eAccelerator 内存模式<br />
结果：Requests per second: 168.53 [#/sec] (mean)</p>
<p>xcache<br />
结果：Requests per second: 191.68 [#/sec] (mean)</p>
<p>ab -n 100000 -c 200</p>
<p>不安装任何缓存器<br />
结果：Requests per second: 77.73 [#/sec] (mean)</p>
<p>eAccelerator<br />
结果：Requests per second: 317.69 [#/sec] (mean)</p>
<p>eAccelerator 内存模式<br />
结果：Requests per second: 325.86 [#/sec] (mean)</p>
<p>xcache<br />
结果：Requests per second: 388.76 [#/sec] (mean)</p>
<p>这时候结果已经很明显了xcache胜出，各项的差距也拉大了。</p>
<p>结果：xcache的性能相当的不错，可以取代eAccelerator。eAccelerator的内存模式对eAccelerator的性能提升不是很大，用了反而会增加系统配置的复杂度。</p>
<p>同时要注意的是mysql的性能，在进行Discuz!部分测试的时候CPU占用率几乎是100％。在没有安装任何缓存器的时mysql的占用率只有10％左右，其他的都被apache占去。安装任何一款缓冲器时，单线程mysql的占用率35％左右，多线程的时候是40％左右，其他的都被apache占去。这样看来缓存器在php应用中是非常重要的，一个缓存器可以大大减轻apache的负担，所以建议所有的php用户都安装一个缓存器。</p>
<p>后记：这次的测试用的参数有点BT了^_^，不过我们就是想得到一个近似合理的测试结果，时间长一点也不过分。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/phps/xcache/feed</wfw:commentRss>
		</item>
		<item>
		<title>MySQL优化经验</title>
		<link>http://www.wuhao.com/sql/mysql-optimize-experience</link>
		<comments>http://www.wuhao.com/sql/mysql-optimize-experience#comments</comments>
		<pubDate>Tue, 29 Jul 2008 22:18:57 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[SQL]]></category>

		<category><![CDATA[Mysql]]></category>

		<category><![CDATA[优化]]></category>

		<category><![CDATA[添加标签]]></category>

		<category><![CDATA[经验]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=32</guid>
		<description><![CDATA[同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法，因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。

安装好mysql后，配制文件应该在/usr/local/mysql/share/mysql目录中，配制文件有几个，有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境，当然需要有不同的配制文件了。
一般的情况下，my-medium.cnf这个配制文件就能满足我们的大多需要；一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了，使用mysqladmin variables extended-status –u root –p 可以看到目前的参数，有３个配置参数是最重要的，即key_buffer_size,query_cache_size,table_cache。
key_buffer_size只对MyISAM表起作用，
key_buffer_size指定索引缓冲区的大小，它决定索引处理的速度，尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点　这个数字是远远不够的，通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低，至少是1:100，1:1000更好（上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得）。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql，以下的状态值都是本人通过phpmyadmin获得的实例分析:
这个服务器已经运行了20天
key_buffer_size – 128M
key_read_requests – 650759289
key_reads - 79112
比例接近1:8000 健康状况非常好
另外一个估计key_buffer_size的办法　把你网站数据库的每个表的索引所占空间大小加起来看看以此服务器为例:比较大的几个表索引加起来大概125M 这个数字会随着表变大而变大。
从4.0.1开始，MySQL提供了查询缓冲机制。使用查询缓冲，MySQL将SELECT语句和查询结果存放在缓冲区中，今后对于同样的SELECT语句（区分大小写），将直接从缓冲区中读取结果。根据MySQL用户手册，使用查询缓冲最多可以达到238%的效率。
通过调节以下几个参数可以知道query_cache_size设置得是否合理
Qcache inserts
Qcache hits
Qcache lowmem prunes
Qcache free blocks
Qcache total blocks
Qcache_lowmem_prunes的值非常大，则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大，则表明查询缓冲使用非常频繁，此时需要增加缓冲大小Qcache_hits的值不大，则表明你的查询重复率很低，这种情况下使用查询缓冲反而会影响效率，那么可以考虑不用查询缓冲。此外，在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。
Qcache_free_blocks，如果该值非常大，则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲
我设置:
query_cache_size = 32M
query_cache_type= 1
得到如下状态值:
Qcache queries in cache 12737 表明目前缓存的条数
Qcache inserts 20649006
Qcache hits 79060095 　看来重复查询率还挺高的
Qcache lowmem prunes 617913　有这么多次出现缓存过低的情况
Qcache not cached [...]]]></description>
			<content:encoded><![CDATA[<p>同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法，因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。</p>
<p><span id="more-32"></span></p>
<p>安装好mysql后，配制文件应该在/usr/local/mysql/share/mysql目录中，配制文件有几个，有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境，当然需要有不同的配制文件了。</p>
<p>一般的情况下，my-medium.cnf这个配制文件就能满足我们的大多需要；一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了，使用mysqladmin variables extended-status –u root –p 可以看到目前的参数，有３个配置参数是最重要的，即key_buffer_size,query_cache_size,table_cache。</p>
<p>key_buffer_size只对MyISAM表起作用，</p>
<p>key_buffer_size指定索引缓冲区的大小，它决定索引处理的速度，尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点　这个数字是远远不够的，通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低，至少是1:100，1:1000更好（上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得）。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql，以下的状态值都是本人通过phpmyadmin获得的实例分析:</p>
<p>这个服务器已经运行了20天</p>
<blockquote><p>key_buffer_size – 128M<br />
key_read_requests – 650759289<br />
key_reads - 79112</p></blockquote>
<p>比例接近1:8000 健康状况非常好</p>
<p>另外一个估计key_buffer_size的办法　把你网站数据库的每个表的索引所占空间大小加起来看看以此服务器为例:比较大的几个表索引加起来大概125M 这个数字会随着表变大而变大。</p>
<p>从4.0.1开始，MySQL提供了查询缓冲机制。使用查询缓冲，MySQL将SELECT语句和查询结果存放在缓冲区中，今后对于同样的SELECT语句（区分大小写），将直接从缓冲区中读取结果。根据MySQL用户手册，使用查询缓冲最多可以达到238%的效率。</p>
<p>通过调节以下几个参数可以知道query_cache_size设置得是否合理</p>
<blockquote><p>Qcache inserts<br />
Qcache hits<br />
Qcache lowmem prunes<br />
Qcache free blocks<br />
Qcache total blocks</p></blockquote>
<p>Qcache_lowmem_prunes的值非常大，则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大，则表明查询缓冲使用非常频繁，此时需要增加缓冲大小Qcache_hits的值不大，则表明你的查询重复率很低，这种情况下使用查询缓冲反而会影响效率，那么可以考虑不用查询缓冲。此外，在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。</p>
<p>Qcache_free_blocks，如果该值非常大，则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲</p>
<p>我设置:</p>
<blockquote><p>query_cache_size = 32M<br />
query_cache_type= 1</p></blockquote>
<p>得到如下状态值:</p>
<blockquote><p>Qcache queries in cache 12737 表明目前缓存的条数<br />
Qcache inserts 20649006<br />
Qcache hits 79060095 　看来重复查询率还挺高的<br />
Qcache lowmem prunes 617913　有这么多次出现缓存过低的情况<br />
Qcache not cached 189896 　　<br />
Qcache free memory 18573912　　目前剩余缓存空间<br />
Qcache free blocks 5328 这个数字似乎有点大　碎片不少<br />
Qcache total blocks 30953</p></blockquote>
<p>如果内存允许32M应该要往上加点</p>
<p>table_cache指定表高速缓存的大小。每当MySQL访问一个表时，如果在表缓冲区中还有空间，该表就被打开并放入其中，这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables，可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache，并且opened_tables在不断增长，那么你就需要增加table_cache的值了（上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得）。注意，不能盲目地把table_cache设置成很大的值。如果设置得太高，可能会造成文件描述符不足，从而造成性能不稳定或者连接失败。</p>
<p>对于有1G内存的机器，推荐值是128－256。</p>
<p>笔者设置table_cache = 256</p>
<p>得到以下状态:</p>
<blockquote><p>Open tables 256<br />
Opened tables 9046</p></blockquote>
<p>虽然open_tables已经等于table_cache，但是相对于服务器运行时间来说,已经运行了20天，opened_tables的值也非常低。因此，增加table_cache的值应该用处不大。如果运行了6个小时就出现上述值 那就要考虑增大table_cache。</p>
<p>如果你不需要记录2进制log 就把这个功能关掉，注意关掉以后就不能恢复出问题前的数据了，需要您手动备份，二进制日志包含所有更新数据的语句，其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外，如果做同步复制( Replication )的话，也需要使用二进制日志传送修改情况。</p>
<p>log_bin指定日志文件，如果不提供文件名，MySQL将自己产生缺省文件名。MySQL会在文件名后面自动添加数字引，每次启动服务时，都会重新生成一个新的二进制文件。此外，使用log-bin-index可以指定索引文件；使用binlog-do-db可以指定记录的数据库；使用binlog-ignore-db可以指定不记录的数据库。注意的是：binlog-do-db和binlog-ignore-db一次只指定一个数据库，指定多个数据库需要多个语句。而且，MySQL会将所有的数据库名称改成小写，在指定数据库时必须全部使用小写名字，否则不会起作用。</p>
<p>关掉这个功能只需要在他前面加上#号</p>
<blockquote><p>#log-bin</p></blockquote>
<p>开启慢查询日志( slow query log ) 慢查询日志对于跟踪有问题的查询非常有用。它记录所有查过long_query_time的查询，如果需要，还可以记录不使用索引的记录。下面是一个慢查询日志的例子：</p>
<p>开启慢查询日志，需要设置参数log_slow_queries、long_query_times、log-queries-not-using-indexes。</p>
<p>log_slow_queries指定日志文件，如果不提供文件名，MySQL将自己产生缺省文件名。long_query_times指定慢查询的阈值，缺省是10秒。log-queries-not-using-indexes是4.1.0以后引入的参数，它指示记录不使用索引的查询。笔者设置long_query_time=10</p>
<p>笔者设置:</p>
<blockquote><p>sort_buffer_size = 1M<br />
max_connections=120<br />
wait_timeout =120<br />
back_log=100<br />
read_buffer_size = 1M<br />
thread_cache=32<br />
interactive_timeout=120<br />
thread_concurrency = 4</p></blockquote>
<p>参数说明:</p>
<p>back_log</p>
<p>要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求，这就起作用，然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接，你需要增加它，换句话说，这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 Unix listen(2)系统调用的手册页应该有更多的细节。检查你的OS文档找出这个变量的最大值。试图设定back_log高于你的操作系统的限制将是无效的。</p>
<p>max_connections</p>
<p>并发连接数目最大，120 超过这个值就会自动恢复，出了问题能自动解决</p>
<p>thread_cache</p>
<p>没找到具体说明，不过设置为32后 20天才创建了400多个线程 而以前一天就创建了上千个线程 所以还是有用的</p>
<p>thread_concurrency</p>
<blockquote><p>#设置为你的cpu数目x2,例如，只有一个cpu,那么thread_concurrency=2<br />
#有2个cpu,那么thread_concurrency=4<br />
skip-innodb<br />
#去掉innodb支持</p></blockquote>
<p>代码:</p>
<blockquote><p># Example MySQL config file for medium systems.<br />
#<br />
# This is for a system with little memory (32M - 64M) where MySQL plays<br />
# an important part, or systems up to 128M where MySQL is used together with<br />
# other programs (such as a web server)<br />
#<br />
# You can copy this file to<br />
# /etc/my.cnf to set global options,<br />
# mysql-data-dir/my.cnf to set server-specific options (in this<br />
# installation this directory is /var/lib/mysql) or<br />
# ~/.my.cnf to set user-specific options.<br />
#<br />
# In this file, you can use all long options that a program supports.<br />
# If you want to know which options a program supports, run the program<br />
# with the &#8220;&#8211;help&#8221; option.</p>
<p># The following options will be passed to all MySQL clients<br />
[client]<br />
#password = your_password<br />
port = 3306<br />
socket = /tmp/mysql.sock<br />
#socket = /var/lib/mysql/mysql.sock<br />
# Here follows entries for some specific programs</p>
<p># The MySQL server<br />
[mysqld]<br />
port = 3306<br />
socket = /tmp/mysql.sock<br />
#socket = /var/lib/mysql/mysql.sock<br />
skip-locking<br />
key_buffer = 128M<br />
max_allowed_packet = 1M<br />
table_cache = 256<br />
sort_buffer_size = 1M<br />
net_buffer_length = 16K<br />
myisam_sort_buffer_size = 1M<br />
max_connections=120<br />
#addnew config<br />
wait_timeout =120<br />
back_log=100<br />
read_buffer_size = 1M<br />
thread_cache=32<br />
skip-innodb<br />
skip-bdb<br />
skip-name-resolve<br />
join_buffer_size=512k<br />
query_cache_size = 32M<br />
interactive_timeout=120<br />
long_query_time=10<br />
log_slow_queries= /usr/local/mysql4/logs/slow_query.log<br />
query_cache_type= 1<br />
# Try number of CPU&#8217;s*2 for thread_concurrency<br />
thread_concurrency = 4</p>
<p>#end new config<br />
# Don&#8217;t listen on a TCP/IP port at all. This can be a security enhancement,<br />
# if all processes that need to connect to mysqld run on the same host.<br />
# All interaction with mysqld must be made via Unix sockets or named pipes.<br />
# Note that using this option without enabling named pipes on Windows<br />
# (via the &#8220;enable-named-pipe&#8221; option) will render mysqld useless!<br />
#<br />
#skip-networking</p>
<p># Replication Master Server (default)<br />
# binary logging is required for replication<br />
#log-bin</p>
<p># required unique id between 1 and 2^32 - 1<br />
# defaults to 1 if master-host is not set<br />
# but will not function as a master if omitted<br />
server-id = 1</p>
<p># Replication Slave (comment out master section to use this)<br />
#<br />
# To configure this host as a replication slave, you can choose between<br />
# two methods :<br />
#<br />
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -<br />
# the syntax is:<br />
#<br />
# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,<br />
# MASTER_USER=, MASTER_PASSWORD= ;<br />
#<br />
# where you replace , , by quoted strings and<br />
# by the master&#8217;s port number (3306 by default).<br />
#<br />
# Example:<br />
#<br />
# CHANGE MASTER TO MASTER_HOST=&#8217;125.564.12.1&#8242;, MASTER_PORT=3306,<br />
# MASTER_USER=&#8217;joe&#8217;, MASTER_PASSWORD=&#8217;secret&#8217;;<br />
#<br />
# OR<br />
#<br />
# 2) Set the variables below. However, in case you choose this method, then<br />
# start replication for the first time (even unsuccessfully, for example<br />
# if you mistyped the password in master-password and the slave fails to<br />
# connect), the slave will create a master.info file, and any later<br />
# change in this file to the variables&#8217; values below will be ignored and<br />
# overridden by the content of the master.info file, unless you shutdown<br />
# the slave server, delete master.info and restart the slaver server.<br />
# For that reason, you may want to leave the lines below untouched<br />
# (commented) and instead use CHANGE MASTER TO (see above)<br />
#<br />
# required unique id between 2 and 2^32 - 1<br />
# (and different from the master)<br />
# defaults to 2 if master-host is set<br />
# but will not function as a slave if omitted<br />
#server-id = 2<br />
#<br />
# The replication master for this slave - required<br />
#master-host =<br />
#<br />
# The username the slave will use for authentication when connecting<br />
# to the master - required<br />
#master-user =<br />
#<br />
# The password the slave will authenticate with when connecting to<br />
# the master - required<br />
#master-password =<br />
#<br />
# The port the master is listening on.<br />
# optional - defaults to 3306<br />
#master-port =<br />
#<br />
# binary logging - not required for slaves, but recommended<br />
#log-bin</p>
<p># Point the following paths to different dedicated disks<br />
#tmpdir = /tmp/<br />
#log-update = /path-to-dedicated-directory/hostname</p>
<p># Uncomment the following if you are using BDB tables<br />
#bdb_cache_size = 4M<br />
#bdb_max_lock = 10000</p>
<p># Uncomment the following if you are using InnoDB tables<br />
#innodb_data_home_dir = /var/lib/mysql/<br />
#innodb_data_file_path = ibdata1:10M:autoextend<br />
#innodb_log_group_home_dir = /var/lib/mysql/<br />
#innodb_log_arch_dir = /var/lib/mysql/<br />
# You can set .._buffer_pool_size up to 50 - 80 %<br />
# of RAM but beware of setting memory usage too high<br />
#innodb_buffer_pool_size = 16M<br />
#innodb_additional_mem_pool_size = 2M<br />
# Set .._log_file_size to 25 % of buffer pool size<br />
#innodb_log_file_size = 5M<br />
#innodb_log_buffer_size = 8M<br />
#innodb_flush_log_at_trx_commit = 1<br />
#innodb_lock_wait_timeout = 50</p>
<p>[mysqldump]<br />
quick<br />
max_allowed_packet = 16M</p>
<p>[mysql]<br />
no-auto-rehash<br />
# Remove the next comment character if you are not familiar with SQL<br />
#safe-updates</p>
<p>[isamchk]<br />
key_buffer = 20M<br />
sort_buffer_size = 20M<br />
read_buffer = 2M<br />
write_buffer = 2M</p>
<p>[myisamchk]<br />
key_buffer = 20M<br />
sort_buffer_size = 20M<br />
read_buffer = 2M<br />
write_buffer = 2M</p>
<p>[mysqlhotcopy]<br />
interactive-timeout</p></blockquote>
<p>补充</p>
<p>优化table_cachetable_cache指定表高速缓存的大小。每当MySQL访问一个表时，如果在表缓冲区中还有空间，该表就被打开并放入其中，这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables，可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache，并且opened_tables在不断增长，那么你就需要增加table_cache的值了（上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得）。注意，不能盲目地把table_cache设置成很大的值。如果设置得太高，可能会造成文件描述符不足，从而造成性能不稳定或者连接失败。对于有1G内存的机器，推荐值是128－256。</p>
<p>案例1：该案例来自一个不是特别繁忙的服务器table_cache – 512open_tables – 103opened_tables – 1273uptime – 4021421 (measured in seconds)该案例中table_cache似乎设置得太高了。在峰值时间，打开表的数目比table_cache要少得多。</p>
<p>案例2：该案例来自一台开发服务器。table_cache – 64open_tables – 64opened-tables – 431uptime – 1662790 (measured in seconds)虽然open_tables已经等于table_cache，但是相对于服务器运行时间来说，opened_tables的值也非常低。因此，增加table_cache的值应该用处不大。案例3：该案例来自一个upderperforming的服务器table_cache – 64open_tables – 64opened_tables – 22423uptime – 19538该案例中table_cache设置得太低了。虽然运行时间不到6小时，open_tables达到了最大值，opened_tables的值也非常高。这样就需要增加table_cache的值。优化key_buffer_sizekey_buffer_size指定索引缓冲区的大小，它决定索引处理的速度，尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads，可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低，至少是1:100，1:1000更好（上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得）。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表，但是内部的临时磁盘表是MyISAM表，也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。对于1G内存的机器，如果不使用MyISAM表，推荐值是16M（8-64M）。</p>
<p>案例1：健康状况key_buffer_size – 402649088 (384M)key_read_requests – 597579931key_reads - 56188案例2：警报状态key_buffer_size – 16777216 (16M)key_read_requests – 597579931key_reads - 53832731案例1中比例低于1:10000，是健康的情况；案例2中比例达到1:11，警报已经拉响。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/sql/mysql-optimize-experience/feed</wfw:commentRss>
		</item>
		<item>
		<title>MySQL优化实例</title>
		<link>http://www.wuhao.com/sql/mysql-optimize-example</link>
		<comments>http://www.wuhao.com/sql/mysql-optimize-example#comments</comments>
		<pubDate>Tue, 29 Jul 2008 22:13:47 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[SQL]]></category>

		<category><![CDATA[Mysql]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=28</guid>
		<description><![CDATA[MySQL优化实例
在Apache, PHP, MySQL的体系架构中，MySQL对于性能的影响最大，也是关键的核心部分。对于Discuz!论坛程序也是如此，MySQL的设置是否合理优化，直接影响到论坛的速度和承载量！同时，MySQL也是优化难度最大的一个部分，不但需要理解一些MySQL专业知识，同时还需要长时间的观察统计并且根据经验进行判断，然后设置合理的参数。

下面我们了解一下MySQL优化的一些基础，MySQL的优化我分为两个部分，一是服务器物理硬件的优化；二是MySQL自身(my.cnf)的优化。
(1) 服务器硬件对MySQL性能的影响
a) 磁盘寻道能力（磁盘I/O）,以目前高转速SCSI硬盘(7200转/秒)为例，这种硬盘理论上每秒寻道7200次，这是物理特性决定的，没有办法改变。MySQL每秒钟都在进行大量、复杂的查询操作，对磁盘的读写量可想而知。所以，通常认为磁盘I/O是制约MySQL性能的最大因素之一，对于日均访问量在100万PV以上的Discuz!论坛，由于磁盘I/O的制约，MySQL的性能会非常低下！解决这一制约因素可以考虑以下几种解决方案：
使用RAID-0+1磁盘阵列，注意不要尝试使用RAID-5，MySQL在RAID-5磁盘阵列上的效率不会像你期待的那样快； 抛弃传统的硬盘，使用速度更快的闪存式存储设备。经过Discuz!公司技术工程的测试，使用闪存式存储设备可比传统硬盘速度高出6－10倍左右。
b) CPU 对于MySQL应用，推荐使用S.M.P.架构的多路对称CPU，例如：可以使用两颗Intel Xeon 3.6GHz的CPU。
c) 物理内存对于一台使用MySQL的Database Server来说，服务器内存建议不要小于2GB，推荐使用4GB以上的物理内存。
(2) MySQL自身因素当解决了上述服务器硬件制约因素后，让我们看看MySQL自身的优化是如何操作的。对MySQL自身的优化主要是对其配置文件my.cnf中的各项参数进行优化调整。下面我们介绍一些对性能影响较大的参数。
由于my.cnf文件的优化设置是与服务器硬件配置息息相关的，因而我们指定一个假想的服务器硬件环境：
CPU: 2颗Intel Xeon 2.4GHz
内存: 4GB DDR
硬盘: SCSI 73GB
下面，我们根据以上硬件配置结合一份已经优化好的my.cnf进行说明：
# vi /etc/my.cnf
以下只列出my.cnf文件中[mysqld]段落中的内容，其他段落内容对MySQL运行性能影响甚微，因而姑且忽略。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# 避免MySQL的外部锁定，减少出错几率增强稳定性。
skip-name-resolve
禁止MySQL对外部连接进行DNS解析，使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意，如果开启该选项，则所有远程主机连接授权都要使用IP地址方式，否则MySQL将无法正常处理连接请求！
back_log = 384
指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求，该参数生效，主线程花费很短的时间检查连接并且启动一个新线程。
back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接，则需要增大该参数的值，该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。
试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
key_buffer_size = 256M
# key_buffer_size指定用于索引的缓冲区大小，增加它可得到更好的索引处理性能。 对于内存在4GB左右的服务器该参数可设置为256M或384M。 注意：该参数值设置的过大反而会是服务器整体效率降低！
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
查询排序时所能使用的缓冲区大小。注意：该参数对应的分配内存是每连接独占！如果有100个连接，那么实际分配的总共排序缓冲区大小为100 × 6 ＝ 600MB。所以，对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
读查询操作所能使用的缓冲区大小。和sort_buffer_size一样，该参数对应的分配内存也是每连接独享！
join_buffer_size = 8M
联合查询操作所能使用的缓冲区大小，和sort_buffer_size一样，该参数对应的分配内存也是每连接独享！
myisam_sort_buffer_size = 64M
table_cache [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff6600;">MySQL优化实例</span></strong></p>
<p>在Apache, PHP, MySQL的体系架构中，MySQL对于性能的影响最大，也是关键的核心部分。对于Discuz!论坛程序也是如此，MySQL的设置是否合理优化，直接影响到论坛的速度和承载量！同时，MySQL也是优化难度最大的一个部分，不但需要理解一些MySQL专业知识，同时还需要长时间的观察统计并且根据经验进行判断，然后设置合理的参数。</p>
<p><span id="more-28"></span></p>
<p>下面我们了解一下MySQL优化的一些基础，MySQL的优化我分为两个部分，一是服务器物理硬件的优化；二是MySQL自身(my.cnf)的优化。</p>
<p>(1) 服务器硬件对MySQL性能的影响</p>
<p>a) 磁盘寻道能力（磁盘I/O）,以目前高转速SCSI硬盘(7200转/秒)为例，这种硬盘理论上每秒寻道7200次，这是物理特性决定的，没有办法改变。MySQL每秒钟都在进行大量、复杂的查询操作，对磁盘的读写量可想而知。所以，通常认为磁盘I/O是制约MySQL性能的最大因素之一，对于日均访问量在100万PV以上的Discuz!论坛，由于磁盘I/O的制约，MySQL的性能会非常低下！解决这一制约因素可以考虑以下几种解决方案：</p>
<p>使用RAID-0+1磁盘阵列，注意不要尝试使用RAID-5，MySQL在RAID-5磁盘阵列上的效率不会像你期待的那样快； 抛弃传统的硬盘，使用速度更快的闪存式存储设备。经过Discuz!公司技术工程的测试，使用闪存式存储设备可比传统硬盘速度高出6－10倍左右。</p>
<p>b) CPU 对于MySQL应用，推荐使用S.M.P.架构的多路对称CPU，例如：可以使用两颗Intel Xeon 3.6GHz的CPU。</p>
<p>c) 物理内存对于一台使用MySQL的Database Server来说，服务器内存建议不要小于2GB，推荐使用4GB以上的物理内存。</p>
<p>(2) MySQL自身因素当解决了上述服务器硬件制约因素后，让我们看看MySQL自身的优化是如何操作的。对MySQL自身的优化主要是对其配置文件my.cnf中的各项参数进行优化调整。下面我们介绍一些对性能影响较大的参数。</p>
<p>由于my.cnf文件的优化设置是与服务器硬件配置息息相关的，因而我们指定一个假想的服务器硬件环境：</p>
<p>CPU: 2颗Intel Xeon 2.4GHz</p>
<p>内存: 4GB DDR</p>
<p>硬盘: SCSI 73GB</p>
<p>下面，我们根据以上硬件配置结合一份已经优化好的my.cnf进行说明：</p>
<blockquote><p># vi /etc/my.cnf</p></blockquote>
<p>以下只列出my.cnf文件中[mysqld]段落中的内容，其他段落内容对MySQL运行性能影响甚微，因而姑且忽略。</p>
<blockquote><p>[mysqld]<br />
port = 3306<br />
serverid = 1<br />
socket = /tmp/mysql.sock<br />
skip-locking<br />
# 避免MySQL的外部锁定，减少出错几率增强稳定性。<br />
skip-name-resolve</p></blockquote>
<p>禁止MySQL对外部连接进行DNS解析，使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意，如果开启该选项，则所有远程主机连接授权都要使用IP地址方式，否则MySQL将无法正常处理连接请求！</p>
<blockquote><p>back_log = 384</p></blockquote>
<p>指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求，该参数生效，主线程花费很短的时间检查连接并且启动一个新线程。</p>
<p>back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接，则需要增大该参数的值，该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。</p>
<p>试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。</p>
<blockquote><p>key_buffer_size = 256M<br />
# key_buffer_size指定用于索引的缓冲区大小，增加它可得到更好的索引处理性能。 对于内存在4GB左右的服务器该参数可设置为256M或384M。 注意：该参数值设置的过大反而会是服务器整体效率降低！<br />
max_allowed_packet = 4M<br />
thread_stack = 256K<br />
table_cache = 128K<br />
sort_buffer_size = 6M</p></blockquote>
<p>查询排序时所能使用的缓冲区大小。注意：该参数对应的分配内存是每连接独占！如果有100个连接，那么实际分配的总共排序缓冲区大小为100 × 6 ＝ 600MB。所以，对于内存在4GB左右的服务器推荐设置为6-8M。</p>
<blockquote><p>read_buffer_size = 4M</p></blockquote>
<p>读查询操作所能使用的缓冲区大小。和sort_buffer_size一样，该参数对应的分配内存也是每连接独享！</p>
<blockquote><p>join_buffer_size = 8M</p></blockquote>
<p>联合查询操作所能使用的缓冲区大小，和sort_buffer_size一样，该参数对应的分配内存也是每连接独享！</p>
<blockquote><p>myisam_sort_buffer_size = 64M<br />
table_cache = 512<br />
thread_cache_size = 64<br />
query_cache_size = 64M</p></blockquote>
<p>指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察：</p>
<blockquote><p># &gt; SHOW VARIABLES LIKE &#8216;%query_cache%&#8217;;<br />
# &gt; SHOW STATUS LIKE &#8216;Qcache%&#8217;;<br />
# 如果Qcache_lowmem_prunes的值非常大，则表明经常出现缓冲不够的情况；</p></blockquote>
<p>如果Qcache_hits的值非常大，则表明查询缓冲使用非常频繁，如果该值较小反而会影响效率，那么可以考虑不用查询缓冲；Qcache_free_blocks，如果该值非常大，则表明缓冲区中碎片很多。</p>
<blockquote><p>tmp_table_size = 256M<br />
max_connections = 768</p></blockquote>
<p>指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示，则需要增大该参数值。</p>
<blockquote><p>max_connect_errors = 10000000<br />
wait_timeout = 10</p></blockquote>
<p>指定一个请求的最大连接时间，对于4GB左右内存的服务器可以设置为5-10。</p>
<blockquote><p>thread_concurrency = 8</p></blockquote>
<p>该参数取值为服务器逻辑CPU数量×2，在本例中，服务器有2颗物理CPU，而每颗物理CPU又支持H.T超线程，所以实际取值为4 × 2 ＝ 8</p>
<blockquote><p>skip-networking</p></blockquote>
<p>开启该选项可以彻底关闭MySQL的TCP/IP连接方式，如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项！否则将无法正常连接！</p>
<p>取自&#8221;http://kb.discuz.net/index.php?title=MySQL%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/sql/mysql-optimize-example/feed</wfw:commentRss>
		</item>
		<item>
		<title>安装与卸载MySQL系统服务(常见问题与错误)</title>
		<link>http://www.wuhao.com/sql/setup</link>
		<comments>http://www.wuhao.com/sql/setup#comments</comments>
		<pubDate>Tue, 29 Jul 2008 22:00:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=26</guid>
		<description><![CDATA[将MySQL添加到Windows系统服务中:
1.、 安装服务。
在Windows2000下，安装完成后，并没有把MySQL安装成服务，我们必须执行下面的语句把MySQL注册为服务:installdir\mysql\bin\MySQLd-nt –-install。
Windows98下没有服务的概念，所以不用安装服务。
2.、 启动服务
在Windows2000下，安装服务后可以启动MySQL服务:net start MySQL。
在Windows98下，可以用下面的命令启动服务:c:\mysql\bin\MySQLd，服务启动后在后台运行，并没有界面。

3.、 停止服务
在Windows2000下，可以通过下面的命令停止MySQL服务:net stop MySQL。
在Windows98下，可以通过下面命令停止服务:C:\&#62; C:\mysql\bin\MySQLadmin -u root shutdown
4、 卸载服务
可以通过下面的命令卸载MySQL服务:installdir\mysql\bin\MySQLd-nt –-remove。
经过上面的安装就可以使用了，可以把我们系统空的数据库内建到mySQL数据目录即可，缺省数据库目录在installdir\MySQL\data。
访问MySQL数据库可以通过dbExpress组件，dbExpress组件是一组高效的数据库访问组件，只要改变连接串，我们就可以直接把数据源连接到MSSQLServer等数据库。
安装与卸载Windows系统服务有专门软件，如果需要，mail to me:wangyihust@163.com
删除了原来的MySQL4.1系统服务后，下载了一个5.0的non-install版本，将其添加到Windows系统服务后，为什么无法启动?-1056错误
1.报错:Can&#8217;t find messagefile &#8216;F:\Program Files\MySQL\share\english\errmsg.sys&#8217;
原因:原来的4.1版本安装在F:\Program Files\MySQL目录;而现在的5.0版本在F:\database目录
解决方法:在c:\winnt\目录下找到my.ini文件，修改或删除之
2.报错:ready for connections.
Version: &#8216;5.0.21-community-nt&#8217; socket: &#8221; port: 3306 MySQL Community Edition (GPL)
原因:socket为空，没有配置MySQL;或者端口已经占用
解决方法: \mysql\bin目录下运行MySQLInstanceConfig.exe配置MySQL实例
如何更改Win2000服务MySQL属性中的可执行文件路径!
开始时在D盘装了MySQL，后来卸载后，格式化D盘，再次安装，路径与原路径不同，不能通过“net start mysql”启动。查看win2000服务中MYsql的属性，可执行文件路径在位于D盘。现在怎么样更改，或启动MySQL?
注册表里HKEY_LOCAL_MECHINE&#8212;SYSTEM &#8212;CurrentControlSet里
启动MySQL服务时出错的几种解决方法
1.安装MYSQL后更改了ROOT的密码后用net startmysql启动时我就遇到了这样的问题.使用以下命令后c:\mysql\bin\mysqladmin-u root -p shutdown再net start MySQL就没有这个错误提示了!
2.MySQL的1067错误
Q:我的MySQL碰到了 1067 错误
错误信息为:
A system error has occurred.
System error 1067 has occurred.
The process terminated [...]]]></description>
			<content:encoded><![CDATA[<p>将MySQL添加到Windows系统服务中:</p>
<p>1.、 安装服务。</p>
<p>在Windows2000下，安装完成后，并没有把MySQL安装成服务，我们必须执行下面的语句把MySQL注册为服务:installdir\mysql\bin\MySQLd-nt –-install。</p>
<p>Windows98下没有服务的概念，所以不用安装服务。</p>
<p>2.、 启动服务</p>
<p>在Windows2000下，安装服务后可以启动MySQL服务:net start MySQL。</p>
<p>在Windows98下，可以用下面的命令启动服务:c:\mysql\bin\MySQLd，服务启动后在后台运行，并没有界面。</p>
<p><span id="more-26"></span></p>
<p>3.、 停止服务</p>
<p>在Windows2000下，可以通过下面的命令停止MySQL服务:net stop MySQL。</p>
<p>在Windows98下，可以通过下面命令停止服务:C:\&gt; C:\mysql\bin\MySQLadmin -u root shutdown</p>
<p>4、 卸载服务</p>
<p>可以通过下面的命令卸载MySQL服务:installdir\mysql\bin\MySQLd-nt –-remove。</p>
<p>经过上面的安装就可以使用了，可以把我们系统空的数据库内建到mySQL数据目录即可，缺省数据库目录在installdir\MySQL\data。</p>
<p>访问MySQL数据库可以通过dbExpress组件，dbExpress组件是一组高效的数据库访问组件，只要改变连接串，我们就可以直接把数据源连接到MSSQLServer等数据库。</p>
<p>安装与卸载Windows系统服务有专门软件，如果需要，mail to me:wangyihust@163.com</p>
<p>删除了原来的MySQL4.1系统服务后，下载了一个5.0的non-install版本，将其添加到Windows系统服务后，为什么无法启动?-1056错误</p>
<p>1.报错:Can&#8217;t find messagefile &#8216;F:\Program Files\MySQL\share\english\errmsg.sys&#8217;</p>
<p>原因:原来的4.1版本安装在F:\Program Files\MySQL目录;而现在的5.0版本在F:\database目录</p>
<p>解决方法:在c:\winnt\目录下找到my.ini文件，修改或删除之</p>
<p>2.报错:ready for connections.</p>
<p>Version: &#8216;5.0.21-community-nt&#8217; socket: &#8221; port: 3306 MySQL Community Edition (GPL)</p>
<p>原因:socket为空，没有配置MySQL;或者端口已经占用</p>
<p>解决方法: \mysql\bin目录下运行MySQLInstanceConfig.exe配置MySQL实例</p>
<p>如何更改Win2000服务MySQL属性中的可执行文件路径!</p>
<p>开始时在D盘装了MySQL，后来卸载后，格式化D盘，再次安装，路径与原路径不同，不能通过“net start mysql”启动。查看win2000服务中MYsql的属性，可执行文件路径在位于D盘。现在怎么样更改，或启动MySQL?</p>
<p>注册表里HKEY_LOCAL_MECHINE&#8212;SYSTEM &#8212;CurrentControlSet里</p>
<p>启动MySQL服务时出错的几种解决方法</p>
<p>1.安装MYSQL后更改了ROOT的密码后用net startmysql启动时我就遇到了这样的问题.使用以下命令后c:\mysql\bin\mysqladmin-u root -p shutdown再net start MySQL就没有这个错误提示了!</p>
<p>2.MySQL的1067错误</p>
<p>Q:我的MySQL碰到了 1067 错误</p>
<p>错误信息为:<br />
A system error has occurred.</p>
<p>System error 1067 has occurred.</p>
<p>The process terminated unexpectedly.A:在我的机上的解决办法是:</p>
<p>修改%windir%\my.ini，增加<br />
[mysqld]</p>
<p>#设置basedir指向mysql的安装路径</p>
<p>basedir=D:\Program\Tools\mysql</p>
<p>datadir=D:\Program\Tools\MySQL\data3.已经弄好了!!!</p>
<p>好像是这样……</p>
<p>mysql_install_db脚本只是在初次安装时才需要运行一次,之后就不用再运行了,不知道是不是这么回事.我把mysql.server拷贝至/etc/rc.d/init.d/中,运行chkconfig mysql.server,至此mysql服务器每次开机自动启动,只要设置好PATH,在命令行上输入MySQL就一切搞定!</p>
<p>看来摸索的过程实在是痛苦啊,这已经折磨我好几天了……</p>
<p>4.问:我的MySQL碰到了 1067 错误</p>
<p>错误信息为:<br />
A system error has occurred.</p>
<p>System error 1067 has occurred.</p>
<p>The process terminated unexpectedly.答:</p>
<p>解决办法:</p>
<p>1.检查你的MySQL目录有没有给系统的System用户权限。</p>
<p>2.删除掉你的 %Windows%/my.ini 文件。</p>
<p>3.检查你的 c:/my.cnf 文件配置是否正确。</p>
<p>5.MySql的默认安装目录是c:mysql，安装结束后没有任何提示信息说安装结束，请点Finish按钮之类的话，直接就退出了。如果需要安装到其他目录，建议先安装到c:mysql，然后再整个目录move到自己希望的地方，例如移动到d:mysql 之后，需要编辑 d:MySQLmy-example.cnf (*.cnf的文件在Windows2000中会被注册成为 SpeedDial文件，在资源管理器中无法操作，要用命令行来启动notepad编辑，例如运行notepadd:MySQLmy-example.cnf ，但是这个文件是UNIX系统下的文本文件格式，在notepad中不能正确换行，可以用write打开编辑，</p>
<p>或者用write打开后保存一次，再用notepad就可以编辑了。)找到basedir一行，去掉前面的“#”号注释，将后面的路径改为移动后的目录(目录分隔符要用斜线而不是反斜线)，然后另存为:c:my.cnf 用服务方式启动的MySql如果用 net stop MySQL 来停止，会得到一条 出错消息，例如:<br />
C:&gt;net stop MySQLMySQL服务正在停止.</p>
<p>系统出错。</p>
<p>系统发生 1067 错误。</p>
<p>进程意外终止。</p>
<p>MySQL服务已成功停止。</p>
<p>这没有关系，MySQL确实已经停止了。但是假如不希望看到任何出错消息 的话，可以用以下的命令来停止:<br />
C:&gt;mysqlbinMySQLadmin -u root shutdown如果没有任何提示信息，说明MySQL已经成功停止了。</p>
<p>需要说明的是MySQL虽然号称安装简单，易于使用，但是这毕竟是基于SQL的数据库管理系统，所以如果不是对SQL十分精通的话恐怕也不能拿它来做什么</p>
<p>6.MySQL服务无法启动的解决方法</p>
<p>MySQL服务无法启动</p>
<p>我的操作系统是 win xp</p>
<p>无论安装何版本的mysql，在管理工具的服务中启动MySQL服务时都会在中途报错</p>
<p>内容为:在 本地计算机 无法启动MySQL服务 错误1067:进程意外中止</p>
<p>经过多方求教，得解决方法如下</p>
<p>查找系统(后来验证应该为Windows目录)目录下的my.ini文件，编辑内容(如果没有该文件，则新建一个)，至少包含basedir，datadir这两个基本的配置。</p>
<p>[mysqld]</p>
<p># set basedir to installation path, e.g., c:/mysql</p>
<p># 设置为MYSQL的安装目录</p>
<p>basedir=D:/www/WebServer/MySQL</p>
<p># set datadir to location of data directory,</p>
<p># e.g., c:/mysql/data or d:/mydata/data</p>
<p># 设置为MYSQL的数据目录</p>
<p>datadir=D:/www/WebServer/MySQL/data另外，要注意<br />
[WinMySQLadmin]</p>
<p>Server=D:/www/WebServer/MySQL/bin/mysqld-nt.exe</p>
<p>user=root</p>
<p>password=xxxxxxxx</p>
<p>#以上是设置WinMySQLadmin的配置</p>
<p>[Client]</p>
<p>user=root</p>
<p>password=xxxxxxxxhehe~ 解决了</p>
<p>7.刚刚弄好MySQL 『关键字 1067错误』</p>
<p>比较郁闷，竟然没有想到安装个MySQL也会出错，错误代码是1067 安装卸载了好几次，就是不行，而且把一些禁用了的服务都打开了，但是还是不行。最后我是这样解决的:</p>
<p>在C:\Windows里找一找my.ini 然后删除 然后再启动winmysqladmin.exe界面配置mysql，保存my.ini就可以了 启动MySQL试试 呵呵</p>
<p>8.MySQL错误 1067: 进程意外终止</p>
<p>这个问题困扰了一个早晨，非常郁闷!以前我在装MySQL的时候从来没有遇到过，可是现在庄这个高版本的就有问题了，我换我装过的低版本的还是一样的问题(最关键的是操作系统都是一样的)。在Windows2000的服务里面启动MySQL服务可是总是弹出“错误 1067: 进程意外终止”!</p>
<p>我感觉问题在配置文件，于是就重新写了my.ini，启动还是一样的效果，我在google上查找无果，崩溃状态!就在此时眼前一亮，一位高人的指点是我豁然开朗，你的ini文件有否放到windows目录下，我从个人目录的windows目录下，将其拷贝到系统Windows目录下，启动服务，ok!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/sql/setup/feed</wfw:commentRss>
		</item>
		<item>
		<title>捷波(Jetway)悍马HA01-GT2初级超频教程</title>
		<link>http://www.wuhao.com/computer/ha01-gt2</link>
		<comments>http://www.wuhao.com/computer/ha01-gt2#comments</comments>
		<pubDate>Tue, 29 Jul 2008 21:54:05 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[硬件]]></category>

		<category><![CDATA[悍马HA01-GT2]]></category>

		<category><![CDATA[捷波]]></category>

		<category><![CDATA[教程]]></category>

		<category><![CDATA[超频]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=13</guid>
		<description><![CDATA[捷波(Jetway)悍马HA01-GT2 教程
超频（英文名称为“OverClock”，简称“OC”），就是人为的提高电脑硬件的工作频率，让其稳定工作在高于其额定频率的状态下。
CPU超频的主要目的是为了提高CPU的工作频率，也就是提高CPU的主频，而CPU的主频又是其外频和倍频的乘积。对于现在市售的AMD主流K8系列来说，由于其倍频只能降低不能提升（最新出现的黑盒子除外），提升CPU主频只能通过提升CPU的外频来实现，而外频的速度通常与前端总线、内存的速度紧密关联，因此当你提升了CPU外频之后，CPU和内存的性能也同时获得了提升。
说起超频，坛子里众多的超频高手都有着很多成功的经历，令新人们既羡慕又嫉妒，那么对于想超频而又从来没有亲自尝试过的同学们来说，该如何掌握这些超频的技巧呢？别着急，请静下心来看完这帖，本菜鸟将着重从BIOS设置、超频实践和性能测试两方面进行讲解，手把手的教你超频的基本技术，让你实现超频的梦想。
由于条件限制（本菜鸟目前只有悍马HA01-GT2），所以本文内容均以HA01-GT2（BIOS版本为TT02）为蓝本进行讲解，使用HA01-GT的朋友也可以作为参考。提醒大家注意：超频有风险，动手须谨慎……

捷波(Jetway)悍马HA01-GT2 
一．BIOS设置篇
BIOS是英文“Basic Input Output System”的缩写，中文名称为“基本输入输出系统”。一块好的主板，如果没有好的BIOS支持，想进行超频是很困难的。捷波为悍马HA01-GT2主板提供了功能强大的多种版本BIOS，使得大家在对CPU、内存等进行超频时非常方便。下面为大家讲解常用的BIOS超频选项及推荐值供大家参考。
（一）BIOS主界面
HA01-GT2主板TT02版BIOS主界面如下图一：
在BIOS主界面中，与超频有关的选项主要有以下几项：Advanced BIOS Features（高级BIOS功能设置）项； PC Health Status（计算机状态监控）项；Thermal Throttling Options（散热保护设置）项以及Power User Overclock Settings（高级用户超频设置）项等。

 
 
 
 
 
 
 
1.Advanced BIOS Features（高级BIOS功能设置）
该设置项的界面如下图二：
选中CPU Fearure项回车，会进入以下图三界面：
其中的“K8 NPT C1E Support”（自动降压降频），超频时从系统稳定考虑，建议关闭；AMD K8 Cool&#38;Quiet coatrol（CPU冷又静），建议关闭。

 
 
 
 
 
 
2.  PC Health Status（计算机状态监控）
该部分主要显示系统各项电压值、温度及各风扇运行状态状态，界面如下图四：
其中，“Show PC Health in Post”用于设置系统引导时是否在开机界面显示电压、温度、风扇工作状态等信息；
“Shutdown Temperature”项用于设置是否启用系统保护，如选择启用，则当CPU温度超过某一设置值时，系统将自动关闭以保护CPU不致损坏；
“SMART FAN Configuratlon”为智能风扇控制台，可以设置根据温度自动控制风扇转速，以减小噪音。选择此项回车，进入以下图五界面：
在这里可以设置CPU达到何种温度时，风扇全速或低速运转，如果选择为“关闭”，则CPU风扇一直保持全速运转，建议超频时将其关闭以加强散热；
SFAN1（SFAN2） speed select用于选择主板风扇的运转速度，以百分比表示。
 
 
3.Thermal Throttling Options（散热保护设置）
其界面如下图六：
散热保护项用于设置CPU达到设定温度时，CPU自动降频，以及降频比例。其中的“CPU  Throttling Beep”项如开启，则CPU温度达到设定值时，会启用声音报警。
此项设置在极限超频时建议关闭。

 
4.        Power User Overclock Settings（高级用户超频设置）
此项为超频设置中最重要的部分，超频成绩与此项设置关系密切，需重点掌握。其界面如下图七：
Electricty Master：CPU降压设置，以百分比显示。
K8&#60;-&#62;NB TH Speed：设置HT总线运行频率，根据CPU实际外频，建议设为3X或2X，超过1000Mhz的HT的设定，有可能造成系统不稳定或是北桥芯片过热。
K8&#60;-&#62;NB TH Width：设置CPU与HT总线传输位宽，为提高性能，建议设置为“16”。
PCIE Clock：PCIE运行频率，默认锁定为100，不需要更改。
CPU Ratio：CPU倍频设置，K8系列只可下调不可上调（最新的黑盒子除外）。
CPU Frequency：CPU外频设置，范围从200～500，先不要设置太高，进系统后再用软件拉高。
DRAM Clock setting：内存档位设置，想找CPU极限的就设400档（有NB米条的除外），想找内存极限的设800档试试，根据你内存体质，也可以选用667档以兼顾性能与稳定。
Lock [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff0000;">捷波(Jetway)悍马HA01-GT2 教程</span></strong></p>
<p>超频（英文名称为“OverClock”，简称“OC”），就是人为的提高电脑硬件的工作频率，让其稳定工作在高于其额定频率的状态下。<br />
CPU超频的主要目的是为了提高CPU的工作频率，也就是提高CPU的主频，而CPU的主频又是其外频和倍频的乘积。对于现在市售的AMD主流K8系列来说，由于其倍频只能降低不能提升（最新出现的黑盒子除外），提升CPU主频只能通过提升CPU的外频来实现，而外频的速度通常与前端总线、内存的速度紧密关联，因此当你提升了CPU外频之后，CPU和内存的性能也同时获得了提升。<br />
说起超频，坛子里众多的超频高手都有着很多成功的经历，令新人们既羡慕又嫉妒，那么对于想超频而又从来没有亲自尝试过的同学们来说，该如何掌握这些超频的技巧呢？别着急，请静下心来看完这帖，本菜鸟将着重从BIOS设置、超频实践和性能测试两方面进行讲解，手把手的教你超频的基本技术，让你实现超频的梦想。<br />
由于条件限制（本菜鸟目前只有悍马HA01-GT2），所以本文内容均以HA01-GT2（BIOS版本为TT02）为蓝本进行讲解，使用HA01-GT的朋友也可以作为参考。提醒大家注意：超频有风险，动手须谨慎……</p>
<p><span id="more-13"></span></p>
<p><strong><span style="color: #ff0000;">捷波(Jetway)悍马HA01-GT2 </span></strong></p>
<p><strong><span style="color: #ff0000;">一．BIOS设置篇</span></strong><br />
BIOS是英文“Basic Input Output System”的缩写，中文名称为“基本输入输出系统”。一块好的主板，如果没有好的BIOS支持，想进行超频是很困难的。捷波为悍马HA01-GT2主板提供了功能强大的多种版本BIOS，使得大家在对CPU、内存等进行超频时非常方便。下面为大家讲解常用的BIOS超频选项及推荐值供大家参考。<br />
（一）BIOS主界面<br />
HA01-GT2主板TT02版BIOS主界面如下图一：</p>
<p>在BIOS主界面中，与超频有关的选项主要有以下几项：Advanced BIOS Features（高级BIOS功能设置）项； PC Health Status（计算机状态监控）项；Thermal Throttling Options（散热保护设置）项以及Power User Overclock Settings（高级用户超频设置）项等。</p>
<p><a href="http://www.wuhao.com/wp-content/uploads/2008/07/01.jpg"><img class="alignleft size-medium wp-image-14" title="01" src="http://www.wuhao.com/wp-content/uploads/2008/07/01-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>1.Advanced BIOS Features（高级BIOS功能设置）<br />
该设置项的界面如下图二：</p>
<p>选中CPU Fearure项回车，会进入以下图三界面：</p>
<p>其中的“K8 NPT C1E Support”（自动降压降频），超频时从系统稳定考虑，建议关闭；AMD K8 Cool&amp;Quiet coatrol（CPU冷又静），建议关闭。<br />
<a href="http://www.wuhao.com/wp-content/uploads/2008/07/02.jpg"><img class="alignleft size-medium wp-image-15" title="02" src="http://www.wuhao.com/wp-content/uploads/2008/07/02-300x225.jpg" alt="" width="300" height="225" /></a><a href="http://www.wuhao.com/wp-content/uploads/2008/07/03.jpg"><img class="alignleft size-medium wp-image-16" title="03" src="http://www.wuhao.com/wp-content/uploads/2008/07/03-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>2.  PC Health Status（计算机状态监控）<br />
该部分主要显示系统各项电压值、温度及各风扇运行状态状态，界面如下图四：</p>
<p>其中，“Show PC Health in Post”用于设置系统引导时是否在开机界面显示电压、温度、风扇工作状态等信息；<br />
“Shutdown Temperature”项用于设置是否启用系统保护，如选择启用，则当CPU温度超过某一设置值时，系统将自动关闭以保护CPU不致损坏；<br />
“SMART FAN Configuratlon”为智能风扇控制台，可以设置根据温度自动控制风扇转速，以减小噪音。选择此项回车，进入以下图五界面：<br />
在这里可以设置CPU达到何种温度时，风扇全速或低速运转，如果选择为“关闭”，则CPU风扇一直保持全速运转，建议超频时将其关闭以加强散热；<br />
SFAN1（SFAN2） speed select用于选择主板风扇的运转速度，以百分比表示。</p>
<p><a href="http://www.wuhao.com/wp-content/uploads/2008/07/4.jpg"><img class="alignnone size-medium wp-image-17" title="4" src="http://www.wuhao.com/wp-content/uploads/2008/07/4-300x225.jpg" alt="" width="300" height="225" /></a> <a href="http://www.wuhao.com/wp-content/uploads/2008/07/5.jpg"><img class="alignnone size-medium wp-image-18" title="5" src="http://www.wuhao.com/wp-content/uploads/2008/07/5-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p> </p>
<p>3.Thermal Throttling Options（散热保护设置）<br />
其界面如下图六：<br />
散热保护项用于设置CPU达到设定温度时，CPU自动降频，以及降频比例。其中的“CPU  Throttling Beep”项如开启，则CPU温度达到设定值时，会启用声音报警。<br />
此项设置在极限超频时建议关闭。<br />
<a href="http://www.wuhao.com/wp-content/uploads/2008/07/6.jpg"><img class="alignnone size-medium wp-image-19" title="6" src="http://www.wuhao.com/wp-content/uploads/2008/07/6-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p> </p>
<p>4.        Power User Overclock Settings（高级用户超频设置）<br />
此项为超频设置中最重要的部分，超频成绩与此项设置关系密切，需重点掌握。其界面如下图七：</p>
<p>Electricty Master：CPU降压设置，以百分比显示。<br />
K8&lt;-&gt;NB TH Speed：设置HT总线运行频率，根据CPU实际外频，建议设为3X或2X，超过1000Mhz的HT的设定，有可能造成系统不稳定或是北桥芯片过热。<br />
K8&lt;-&gt;NB TH Width：设置CPU与HT总线传输位宽，为提高性能，建议设置为“16”。<br />
PCIE Clock：PCIE运行频率，默认锁定为100，不需要更改。<br />
CPU Ratio：CPU倍频设置，K8系列只可下调不可上调（最新的黑盒子除外）。<br />
CPU Frequency：CPU外频设置，范围从200～500，先不要设置太高，进系统后再用软件拉高。<br />
DRAM Clock setting：内存档位设置，想找CPU极限的就设400档（有NB米条的除外），想找内存极限的设800档试试，根据你内存体质，也可以选用667档以兼顾性能与稳定。<br />
Lock PCI Clock 33MHZ：默认锁定PCI设备工作频率为33；<br />
CPU OverVoltage Setting：设置CPU电压，根据CPU类型和体质来设置，别太贪心哦，搞死CPU本鸟是不负责滴…<br />
DIMM OverVoltages Setting：内存电压设置，同样不可贪心，常见的白菜价内存最好不要超过2.25V，烧掉就得不偿失了；<br />
下面两项就不多说了，加不加压的对超频影响不太大，自已看着办吧。</p>
<p><a href="http://www.wuhao.com/wp-content/uploads/2008/07/7.jpg"><img class="alignnone size-medium wp-image-20" title="7" src="http://www.wuhao.com/wp-content/uploads/2008/07/7-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>接下来，选中“DRAM Configuration”回车，进入内存参数设置，见下图八：</p>
<p>各位XDJMS注意，很多时候CPU超不上去，跟这里的设置有很大关系，请想睡觉的同学们睁大眼睛竖起耳朵注意听讲。<br />
DRAM Latency：预充电时间（TCL），一般简称CL，表示系统自主内存读取第一笔资料时所需的准备时间。在内存可以承受的情况下越快越好，开不了机或蓝屏的话放宽些吧。<br />
RAS to CAS R/W Delay：列控制器至行控制器传输延迟（Trcd），内存控制器会先送出列(ROW)的位址，然后RAM收到列的位置后，经过一段时间，才会再传送行(Column)的位址，而这一段时间就是RAS Delay。设置原则同TCL。<br />
Row Precharge Time：内存行地址控制器预充电时间（Trp），预充电参数越小则内存读写速度越快。<br />
Mini RAS Active Time：内存活跃延迟（Tras），一般内存模组有分1bank跟2bank，当CPU在Bank1找完资料,Bank1便需要一段时间恢复才能再供利用,这一段时间就是RAM Active Time，根据内存体质越小越好咯。<br />
DRAM Command Rate：传送、读取 “定址内存模组和内存芯片的频率循环”所需时间。可设置为“1T”或“2T”。1T拥有较少的延迟，较佳的系统内存性能，但稳定性较差；2T拥有较长的延迟、差很多的内存效能，但比较稳定，超频时建议设置为“2T”。<br />
DRAM Bank Interleaving：存储区块交错式运行模式。默认为开启，目前的内存都支持这一工作方式，不需要更改。<br />
DQS Training Control：数据信号时间差控制，一般不需要更改。<br />
Memc Lock tri-stating：默认为关闭，没搞懂也没试过。<br />
Memory Hole Remapping：内存孔洞重映射，使用32位操作系统的可以无视它。<br />
Auto Optimize Bottom IO:自动优化底层IO，默认开启，不用理会。<br />
DDRII Timing Item：开启此项，才可以调整内存每个内存通道的延迟。<br />
TwTr Command Delay：内存读到写延迟，建议设成2或3。<br />
Twfc（0～3）For DIMM（0～3）：CPU与内存槽的连接延时，建议都先设成195，稳定后再逐步收紧，可以跑75最好。<br />
（Twr）Write Recovery Time：写恢复延迟，可以设为4～6。<br />
（Trtp）precharge Time：内存预充电时间，默认值为3，也可以设为4。<br />
（Trc）        Row Cycle Time：内存的行周期时间，取11～26之间均可，内存运行一个完整周期的时间越快越好。<br />
（Rrrd）RAS to RAS Delay：预充电时间，延迟越低，表示下一个BANK能更快地被激活，进行读写操作。<br />
BIOS里有关超频的设置基本上就是这些，退出时记得保存，否则又要重新来过。OK，现在进入超频实战阶段。</p>
<p><a href="http://www.wuhao.com/wp-content/uploads/2008/07/8.jpg"><img class="alignnone size-medium wp-image-21" title="8" src="http://www.wuhao.com/wp-content/uploads/2008/07/8-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p> </p>
<p><strong><span style="color: #ff0000;">捷波(Jetway)悍马HA01-GT2</span></strong></p>
<p><strong><span style="color: #ff0000;">二．实战超频</span></strong><br />
理论方面的东西大家都知道，下面进行实际操作。此次我们将一颗默认频率为2G的AMD 3800+超频到3.5G，测试其SUPER PI的成绩。<br />
BIOS操作部分请大家参照上一章所附图片。<br />
1.        进BIOS中关闭AMD冷又静、自动降压降频等功能。<br />
2.        进BIOS中关闭智能风扇控制、高温自动关机等功能。<br />
3.        进入Power User Overclock Settings<br />
设Electricty Master项为默认；<br />
K8&lt;-&gt;NB TH Speed项设为3X；<br />
K8&lt;-&gt;NB TH Width项设为16；<br />
CPU Frequency项设为300外频起步；<br />
DRAM Clock setting项设内存档位为667档起步（内存体质不好的同学还是设成533档吧）；<br />
CPU OverVoltage Setting项设CPU电压为1.48V<br />
DIMM OverVoltages Setting项设内存电压为2.4V<br />
4.        进入DRAM Configuration项，设内存参数为5-5-5-12-2T<br />
Twfc（0～3）For DIMM（0～3）项全部设为75。<br />
设置完成，保存后重启进入操作系统，打开ClockGen，打开两个CPU-Z，一个用于监视内存频率、参数；一个用于监视CPU频率及HT总线。再打开一个MyGuard，用于监视各系统电压、温度。经超频，CPU频率极限如下图九：</p>
<p>SUPER PI 1M成绩如图十（内存参数在进系统后用MemSet进行优化）：<br />
附件</p>
<p><a href="http://www.wuhao.com/wp-content/uploads/2008/07/9.jpg"><img class="alignnone size-medium wp-image-22" title="9" src="http://www.wuhao.com/wp-content/uploads/2008/07/9-300x225.jpg" alt="" width="300" height="225" /></a> <a href="http://www.wuhao.com/wp-content/uploads/2008/07/10.jpg"><img class="alignnone size-medium wp-image-23" title="10" src="http://www.wuhao.com/wp-content/uploads/2008/07/10-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>HA01-GT2的超频教程就写到这里，本菜鸟水平有限，谬误之处还请坛子里各位大虾指教。<br />
提醒一下各位OC初学者，超频过程一定要胆大心细，特别是在更改电压设置后更要倍加小心，开机自检时注意看一下屏幕下方的健康状态，发现电压、温度等有问题时，一定要马上关机清空BIOS，切记切记！！！</p>
<p>祝捷波(Jetway)悍马HA01-GT2的网友超频超频成功</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/computer/ha01-gt2/feed</wfw:commentRss>
		</item>
		<item>
		<title>历尽磨难的吴昊博客正式上线了!</title>
		<link>http://www.wuhao.com/i-say/online</link>
		<comments>http://www.wuhao.com/i-say/online#comments</comments>
		<pubDate>Tue, 29 Jul 2008 08:33:35 +0000</pubDate>
		<dc:creator>Wuhao</dc:creator>
		
		<category><![CDATA[吴昊杂谈]]></category>

		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[吴昊]]></category>

		<guid isPermaLink="false">http://www.wuhao.com/?p=3</guid>
		<description><![CDATA[在2006年开博到此已有2年
然能访问的到wuhao.com 的时间，不到1/3。让人欣慰的是即这样，百度依然能搜索到吴昊的博。生命力十分顽强。
在06年开博客是因好友石瑞(o-blog作者) 在开发O-blog博客系统

后来数据库出问题而关闭了，再后使用的WORDPRESS系统，写过几篇日志，然后没有再管，服务器展转出现多次问题，也就没有时间打理了，这次开博，下了很大的决心，定要将它做好。不求有什么发展，只求它可以记录我的点点滴滴，能让它把我的快乐，忧愁分享过伙伴们，更希望将我得到的好的资源，资料，网站，与大家分享。
这次开博真的是费尽周折，服务器在使用IIS的情况下，永久连接(Rewrite)总是有问题。最后自己写了个规则。是支持 /%category%/%postname%.html 分类 for wordpress 2.6 的。呆会分享，不过在自定页面上有BUG。所以不得不使用APACHE作服务器。
 
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# # Below is for permalink like /%year%%monthnum%%day%/%postname%.html
RewriteRule /tag/(.*) /index\.php\?tag=$1
RewriteRule /(contact&#124;about-copyright&#124;favor&#124;archives&#124;tags&#124;sitemap)/ /index\.php\?pagename=$1
RewriteRule /category/(.*)/(feed&#124;rdf&#124;rss&#124;rss2&#124;atom)/?$ /wp-feed\.php\?category_name=$1&#38;feed=$2
RewriteRule /category/?(.*) /index\.php\?category_name=$1
RewriteRule /author/(.*)/(feed&#124;rdf&#124;rss&#124;rss2&#124;atom)/?$ /wp-feed\.php\?author_name=$1&#38;feed=$2
RewriteRule /author/?(.*) /index\.php\?author_name=$1
RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2
RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2
RewriteRule /page/(.*)/ /index\.php\?paged=$1
RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?.html/?$ /index\.php\?year=$1&#38;monthnum=$2&#38;day=$3&#38;name=$4&#38;page=$5
RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/?$ /index\.php\?year=$1&#38;monthnum=$2&#38;day=$3&#38;page=$4
RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&#38;monthnum=$2&#38;page=$3
RewriteRule [...]]]></description>
			<content:encoded><![CDATA[<p>在2006年开博到此已有2年</p>
<p>然能访问的到wuhao.com 的时间，不到1/3。让人欣慰的是即这样，百度依然能搜索到吴昊的博。生命力十分顽强。</p>
<p>在06年开博客是因好友石瑞(o-blog作者) 在开发O-blog博客系统</p>
<p><span id="more-3"></span></p>
<p>后来数据库出问题而关闭了，再后使用的WORDPRESS系统，写过几篇日志，然后没有再管，服务器展转出现多次问题，也就没有时间打理了，这次开博，下了很大的决心，定要将它做好。不求有什么发展，只求它可以记录我的点点滴滴，能让它把我的快乐，忧愁分享过伙伴们，更希望将我得到的好的资源，资料，网站，与大家分享。</p>
<p>这次开博真的是费尽周折，服务器在使用IIS的情况下，永久连接(Rewrite)总是有问题。最后自己写了个规则。是支持 /%category%/%postname%.html 分类 for wordpress 2.6 的。呆会分享，不过在自定页面上有BUG。所以不得不使用APACHE作服务器。</p>
<p> </p>
<blockquote><p>[ISAPI_Rewrite]</p>
<p># 3600 = 1 hour<br />
CacheClockRate 3600</p>
<p>RepeatLimit 32</p>
<p># Protect httpd.ini and httpd.parse.errors files<br />
# from accessing through HTTP</p>
<p># # Below is for permalink like /%year%%monthnum%%day%/%postname%.html</p>
<p>RewriteRule /tag/(.*) /index\.php\?tag=$1</p>
<p>RewriteRule /(contact|about-copyright|favor|archives|tags|sitemap)/ /index\.php\?pagename=$1</p>
<p>RewriteRule /category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?category_name=$1&amp;feed=$2</p>
<p>RewriteRule /category/?(.*) /index\.php\?category_name=$1</p>
<p>RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?author_name=$1&amp;feed=$2</p>
<p>RewriteRule /author/?(.*) /index\.php\?author_name=$1</p>
<p>RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2</p>
<p>RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2</p>
<p>RewriteRule /page/(.*)/ /index\.php\?paged=$1</p>
<p>RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?.html/?$ /index\.php\?year=$1&amp;monthnum=$2&amp;day=$3&amp;name=$4&amp;page=$5</p>
<p>RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/?$ /index\.php\?year=$1&amp;monthnum=$2&amp;day=$3&amp;page=$4</p>
<p>RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&amp;monthnum=$2&amp;page=$3</p>
<p>RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+).html/(feed|rdf|rss|rss2|atom)/?$ /index\.php\?year=$1&amp;monthnum=$2&amp;day=$3&amp;name=$4&amp;feed=$5</p>
<p>RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+).html/trackback/?$ /wp-trackback\.php\?year=$1&amp;monthnum=$2&amp;day=$3&amp;name=$4&amp;tb=1</p>
<p>#RewriteRule /([^/]+)/?$ /index\.php\?page_id=$2</p>
<p>RewriteRule /about/ /index\.php\?page_id=$1</p>
<p>RewriteRule /tag/(.*)/ /index\.php\?tag=$1</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.wuhao.com/i-say/online/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
