<?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>臭皮匠 &#187; linux</title>
	<atom:link href="http://guogoul.com/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://guogoul.com</link>
	<description></description>
	<lastBuildDate>Wed, 07 Jul 2010 04:53:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>转载 snmp 重要的OID 备忘</title>
		<link>http://guogoul.com/2010/01/21/snmp-oid/</link>
		<comments>http://guogoul.com/2010/01/21/snmp-oid/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 08:33:13 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=238</guid>
		<description><![CDATA[转载自：
1. http://www.sysadmin.md/most-useful-snmp-oids.html
2. http://blog.chinaunix.net/u2/70049/showart_1136607.html
CPU
Percentages of user CPU time (ssCpuUser)
.1.3.6.1.4.1.2021.11.9
Percentages of system CPU time (ssCpuSystem)
.1.3.6.1.4.1.2021.11.10
Percentages of idle CPU time (ssCpuIdle)
.1.3.6.1.4.1.2021.11.11
Load
1 minute Load (laLoad.1)
.1.3.6.1.4.1.2021.10.1.3.1
5 minute Load (laLoad.2)
.1.3.6.1.4.1.2021.10.1.3.2
15 minute Load (laLoad.3)
.1.3.6.1.4.1.2021.10.1.3.3

Memory
Total Swap Size configured for the host (memTotalSwap)
.1.3.6.1.4.1.2021.4.3
Available Swap Space on the host (memAvailSwap)
.1.3.6.1.4.1.2021.4.4
Total Real/Physical Memory Size on the host (memTotalReal)
.1.3.6.1.4.1.2021.4.5
Available Real/Physical Memory Space on the host (memAvailReal)
.1.3.6.1.4.1.2021.4.6
Total RAM [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2010/01/21/snmp-oid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dd用于磁盘读写性能测试</title>
		<link>http://guogoul.com/2009/11/04/dd/</link>
		<comments>http://guogoul.com/2009/11/04/dd/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:02:26 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[disk]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=224</guid>
		<description><![CDATA[dd是一个linux下的文件复制和转换程序。除非告诉dd命运去进行某种转换操作，否则它只是进行从输入文件到输出文件的复制工作。不过现在dd更多的用来进行磁盘性能的测试，而不是原始用于copy的意图。
/dev/null：回收站、无底洞. 你可以输入任何东西它不会吃撑着（这种能力吃自助比较合适）
/dev/zero：用于产生字符，会产生无尽的0字符
以下转换自网络(http://www.xclinux.cn/?p=777):不知是否原创，copy过来自己备忘！
1.测试磁盘写能力
time dd if=/dev/zero of=/test.dbf bs=8k count=300000
因为/dev/zero是一个伪设备，它只产生空字符流，对它不会产生IO，所以，IO都会集中在of文件中，of文件只用于写，所以这个命令相当于测试磁盘的写能力。
2.测试磁盘读能力
time dd if=/dev/sdb1 of=/dev/null bs=8k
因为/dev/sdb1是一个物理分区，对它的读取会产生IO，/dev/null是伪设备，相当于黑洞，of到该设备不会产生IO，所以，这个命令的IO只发生在/dev/sdb1上，也相当于测试磁盘的读能力。
3. 测试同时读写能力
time dd if=/dev/sdb1 of=/test1.dbf bs=8k
这个命令下，一个是物理分区，一个是实际的文件，对它们的读写都会产生IO（对/dev/sdb1是读，对/test1.dbf是写），假设他们都在一个磁盘中，这个命令就相当于测试磁盘的同时读写能力。
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/11/04/dd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>首次参与beta技术沙龙</title>
		<link>http://guogoul.com/2009/08/23/blogbeta_snmp/</link>
		<comments>http://guogoul.com/2009/08/23/blogbeta_snmp/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 14:18:20 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=197</guid>
		<description><![CDATA[    前两天在“TL”上看到这次沙龙的讨论话题.由于对服务的监控这个议题比较感兴趣，工作中也时常会用到，所以今天去围观学习一下。今天参加的朋友比想像中的要少，不过朋友的交流比预期的好.此次聚会上还见到了一个没见过面的老朋友。感谢霍大哥的分享。


       此次活动的主要议题是如何用snmp来对网络服务器的监控，不过老霍的ppt到目前为止还没有分享出来。


       此次沙龙中提到的服务器监控方案我觉得很有想像力，问题解决的也很完美。不过个人感觉会存在以下几点问题：
1. snmp协议相对软件开发人员来说都比较陌生。这种个性化的监控体系可能存在不易长期维护的危险（相对于cacti+net_snmp来讲）

2. 树型的网络拓扑，导致子节点的信息依赖与于父节点，如果父节点挂掉，子节点的信息就无从获取。
3. 服务与机器的信息是被动的被收集，感觉没有机器主动post相关的信息到信息数据中心好。因为信息数据中心定期去取信息，可能存在定期内完不成任务导致死循环，而节点主动post信息给信息数据中心肯定不会存在这个问题，除非同时并发很多的请求。按目前的沙龙中提到的案例5s中收到几百个post应该不会是个问题。

感觉 beta 技术沙龙的所有与会者的分享。
更新： blogbeta已把视频和ppt放出了
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/08/23/blogbeta_snmp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>mysql，系统架构学习材料分享</title>
		<link>http://guogoul.com/2009/07/29/share_percona_pdf/</link>
		<comments>http://guogoul.com/2009/07/29/share_percona_pdf/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 01:13:39 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=191</guid>
		<description><![CDATA[最近花了点时间看完了国外的大牛在Percona会议上的演讲稿，选了一些个人觉得对我自己有用的Pdf，分享给大家。主要关于数据存储，备份，系统性能优化方面.本来的想法是把这些文档翻译到博客上，又怕糟蹋了人家的作品，还是直接上传原文件吧.由于文件有点大分两个压缩包上传。
learn1
learn2
里面包括以下几个文件:
1.Ideal Achitecture:  主要介绍了mysql表字段与索引的设计
2.Fighting_MySQL_Replication_Lag:介绍如何解决mysql主从复制的延时最小化问题
3.Innodb_Performance_Tuning： innodb相关介绍
4.mysql_pagination：   数据库分页查询的设计问题
5.non_disruptive_backups:  用lvm快照解决数据备份
6.percona_proactive:  dba，系统管理员所要关心的问题
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/07/29/share_percona_pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>badblocks &#8211;磁盘坏道检查</title>
		<link>http://guogoul.com/2009/07/08/badblocks/</link>
		<comments>http://guogoul.com/2009/07/08/badblocks/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 05:11:30 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=181</guid>
		<description><![CDATA[参数：
-b 指定磁盘的区块大小，单位为字节。
-o 将检查的结果写入指定的输出文件。
-s 在检查时显示进度。
-v 执行时显示详细的信息。
-w 在检查时，执行写入测试。
例子：
$badblocks -s -v  /dev/sda
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/07/08/badblocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>优化web服务器tcp半连接</title>
		<link>http://guogoul.com/2009/06/23/tcp_tw_reuse/</link>
		<comments>http://guogoul.com/2009/06/23/tcp_tw_reuse/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 15:46:43 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sysctrl]]></category>

		<guid isPermaLink="false">http://john.renren.in/?p=116</guid>
		<description><![CDATA[在繁忙的web服务器上,很常见的问题是大量tcp 半连接的存在占用系统的大量资源。有效的减少半连接对优化服务器响应有着重要的作用。
实践步骤：
1。执行 /bin/netstat -n &#124; awk &#8216;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&#8217;
2。vi /etc/sysctl.conf   添加如下两行:

1)net.ipv4.tcp_tw_reuse = 1     //允许将TIME-WAIT sockets重新用于新的TCP连接
2)net.ipv4.tcp_tw_recycle = 1  //开启TCP连接中TIME-WAIT sockets的快速回收

3。运行sysctl -p

4。执行 /bin/netstat -n &#124; awk &#8216;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&#8217;
如果对于TIME_WAIT较高的服务器来说应该很快就会看到效果
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/06/23/tcp_tw_reuse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>rsync数据同步利器</title>
		<link>http://guogoul.com/2009/06/01/rsync/</link>
		<comments>http://guogoul.com/2009/06/01/rsync/#comments</comments>
		<pubDate>Sun, 31 May 2009 16:02:44 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">http://john.renren.in/?p=124</guid>
		<description><![CDATA[对于系统运维人员来说rsync 应该是工具箱中的一个常用工具，其稳定，便捷，高效的特性一直为人所称道.rsync一般会配合cron工作，cron定时自动完成系统数据同步工作。
1.决定使用哪种传输协议？
在默认条件下，rsync可以用RSH协议与远程系统进行通信。通过调整参数还可以用SSH协议，这样就可利用所有的标准SSH认证方法，并实现加密的文件传输。建议用ssh协议
2.基本应用
试验rsync的时候应该非常小心，因为很可能一不小心就将大量数据发送到它们本不该出现的地方。 verbose(-v)与dry-run(-n)在你试验的时候将会十分的有用，verbose能让你看到修改的结果，dry-run就是不对文件进行真正的修改主，只产生结果信息。
注意： 文件夹参数后面有/与没有/的区别。如果源目录有/表示当前目录下的所有文件 ，如果没有/表示当前文件夹也包括其中
-a:  以归档的模式进行操作，这将导致rsync以递归方式运行，并保留权限，所有权，符号链接，设备文件，访问时间等信息，等同于： -rlptgoD先项的作用

3.实例：
rsync -a /usr/local     root@remote_host:/usr/local
rsync -a /usr/local/     root@remote_host:/usr/local
注意上面两个结果是不同的 前者local与远程机器的同步，后者会出现本地/usr/local与远程/usr/local/local进行同步
参考：
Rsync详解： http://blog.chinaunix.net/u/25100/showart_363397.html
官网： http://rsync.samba.org/
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/06/01/rsync/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>raid管理的几个命令</title>
		<link>http://guogoul.com/2008/12/05/raid_manage/</link>
		<comments>http://guogoul.com/2008/12/05/raid_manage/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 15:54:44 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/12/05/raid_manage/</guid>
		<description><![CDATA[几天前cacti提示有台服务器的硬盘挂掉一个，折腾了半天 搞得够怆发现硬盘没有什么问题，不过被raid自动remove了一个硬盘,我怀疑硬盘有坏道了继续观察两天看看。
1.查看当前系统raid的基本状态
   cat /proc/mdstat
例如：
testvm:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc1[0] sdd1[1]
      3903680 blocks [2/2] [UU]
md2 : active raid10 sda2[0] sdd2[3] sdc2[2] sdb2[1]
      968960256 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md0 : active raid1 sda1[0] [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2008/12/05/raid_manage/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>关于web系统扩展的几点记录</title>
		<link>http://guogoul.com/2008/11/01/sys_web_extend/</link>
		<comments>http://guogoul.com/2008/11/01/sys_web_extend/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 06:27:02 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/11/01/sys_web_extend/</guid>
		<description><![CDATA[注:本文只谈系统的可扩展点，并不涉及相关技术的具体实现。
可扩展性的定义特性: 1.系统可以容纳使用率的增加，可以简单的理解为用户数的增加2.系统可以容纳数据集的增加。3.系统可维护。
误区:
1.可扩展不是指原始速度，性能和可扩性是不同的问题2.可扩展性与是否选择某种语言无关。3.可扩展性与特定的技术是无关的。
扩展的几个方向与要点:
一,扩展硬件平台硬件扩展大体上可以分为两类：1.垂直扩展:原理：很简单当机器性能不足时买一台更大，更强，更猛的机器代替。优点:设计容易实现，只需在本地机器上构建系统。一定体系稳定，只要换好的机器就行。不足: 成本不是线性增加的，可能是指数级的。尽管你很有钱，不担心钱的问题,不过由于单台机器的能力有限的，那么这种模型最终会受到限制。2.水平扩展:原理:不断的增加更多的硬件,不同垂直扩展的是增长不需要超级强劲的机器，只要很多常规机器。优点:能够混用不同服务器并且能够配备最便宜服务器的应用程序，将一直保持成本上的优势。不足:添加减少机器可能比较容易，但不会过于简单.你将要花费大量的管理成本。3.冗余:不管是垂直扩展还是水平扩展，机器都有可能发生故障，这样的话给机器做完全热备是必要的，当一个组件故障时，其他组件自动接手它的工作。
二,负载平衡
1. DNS负载平衡这个最简单的平衡方案，同时存在不少的问题.1)做法:在 DNS中给一个域添加多个IP,这样请求域名解析的时候分随机的返回不同的IP地址实现平衡的目的2）问题： 更新dns的速度比较缓慢，如果要移除一台坏的机器比较的困难了,另一个问题就是无法实现精确控制，也不能定制化平衡。总得来说DNS负载不是一个好的方案。
2.VIP:这个名词比较有意思，记得有一回去yahoo,技术人员与我谈代码发布时谈到了VIP的一个问题，我就有点乱了，VIP===》贵宾？。还冒出了MVP之类的概念.：VIP是虚拟IP的意思，一个VIP是由负载平衡器提供的一个IP地址，背后其实有多个实际的IP地址在处理请求.负载平衡器也被称作虚拟服务器。
3.硬件方式的负载平衡:1)别名:web交换机,内容交换机,内容路由器.2)特点:非常的昂贵。
4.软件方式的负载平衡:1)前一段时间才知道lvs(http://www.linuxvirtualserver.org)是一个给linux打上内核补丁的负载平衡操作系统，不过lvs是为了处理极为复杂的负载情况，对于一般平衡就没有必要。
2)第四层与第7层负载平衡注意这个第字。刚接触的时候不理解，直接看成四层，与7层。呵呵，7层比4层多三层当然7层要牛很多。第7层的确比第4层更灵活，但原因绝对不是7比4大.第4层与第7层指的是网络分层.传统的负载平衡是在第四层处理的,用户的请求来源与目标IP地址与端口在这一层被捕获，有了这些信息就可以把这个连接引导到后台正常的端口上。最简单的第四层负载采用的是循环算法(round robin)。就是把请请求循环发送到生产服务器上。除了循环之外，也可以做随机算法。在两种方法中都可以加上权重，对权重比较高的生产服务器，只要有队列中重复出现几次那么被分配到流量的比重就越高。第7层负载比第4层负载出现的晚，它比第4层更加易活。因为第7层负载平衡器检测HTTP请求，这能够查看请求和请求的标头，并将这些信息纳入平衡策略的考虑中。这样就可以做基于URL平衡，可以确保对特定资源的所有请求都被调度到同一台机器上，这样的方便在同一台机器上做缓存，提高缓存命中率。这就是比第四层优秀的原因之一.听说apache的mod_rewrite模块加上一些脚本就可以做第7层的负载，具体我没有实施过，不过试过用ngnix做过第4层负载平衡，十分简单:)
三,扩展Mysql1.可以从主从(master-slave)复制方面考滤提高并行读写性能,当然选表的存储引引擎也很关键，MyISAM能非常快地进行读写操作，但是无法同时快速度的读写操作,而且也不支持事务操作，现在好像比较流行InnoDB。不过innoDB不提供fulltext索引,innoDB的占用的硬盘空间大约会是Myisam的3倍左右。
2.数据库分区也是数据库扩展的重要因素。不合理的数据库分区将会影响以后数据库的扩展.
四,缓存扩展在缓存的选择上我觉得分存式的缓存memcached(http://memcachedb.org/)是一个无可挑剔解决方案，可以解决大多数的问题
五,存储系统的扩展:&#160;目前只用过NFS,NFS在实际生产过程中还是存在很多不足。请各位有识之士,留下宝贵意见.!



]]></description>
		<wfw:commentRss>http://guogoul.com/2008/11/01/sys_web_extend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于web系统的瓶颈几点记录</title>
		<link>http://guogoul.com/2008/10/26/sys_bottleneck/</link>
		<comments>http://guogoul.com/2008/10/26/sys_bottleneck/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 14:30:32 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/10/26/sys_bottleneck/</guid>
		<description><![CDATA[所谓找出瓶颈，就是找出程序中费时最多的部分。要查看各个时间段，从请求进入到我们网络的边界开始，直到响应离开。&#160;Donald Knuth: 在条件不成熟的情况下贸然进行优化是程序设计中所有罪恶的源泉。如果只是想着要重构X,就能加快这儿的速度，而不去实际测试系统并确认X处于关键路径中，那就是在浪费时间和精力。
关于CPU:&#160; 在不成熟的观察者看来，cpu时间是每个应用程序的主要瓶颈，而实际上，这种情况很少发生，影响程序的主要性能的真正原因是 IO.什么是IO?IO包括了所有的数据移动，数据移动的本质上就是应用程序中所做的一切。和大家的观点相反，cpu处理速度基本上从来不是web应用程序中的瓶颈。如果发现主要瓶颈在cpu,那很有可能在基本设计层面存在问题.(那些少数cpu密集任务除外，如处理图像，视频，音频，加密大段数据等)&#160; top命令的%CPU列显示每个进程占用cpu的情况，也可以用uptime看一下当前系统的平均负载。
代码性能测试:&#160; 捕捉运行中代码的运行信息用，识别代码中最费时的部分有利于代码的优化。比较简单直接的做法不是在函数运行之前记下当前时间戳，到了函数运行之后再记一下时间，两个时间相差就可以算出当前函数花费时间。对于php程序员来说用xdebug(http://xdebug.org)是一个好的选择,安装了xdebug之后在脚本运行之前调用xdebug_start_profiling(),在脚本调用结束后运行xdebug_dump_function_trace()就可以以html来输出性能测试数据的表格。大家可以一试，很不错。测试代码会大大降低执行速度，如果有一个负载均衡池，可以让一部份的生产流量流经剖析工具。
提高代码运行的速度:&#160; 1.操作码缓存： 在cgi模式下，每执行一次脚本都要编译源代码。可以借助一些工具把源码编码成OPCODE做存起来多次运行,APC缓存是一个好的方案&#160; 2.提高模板反应速度： 与opcode相同的原理，多次编译是浪费时间，模板可以保存编译结果多次调用。在调用时默认会查看源模板文件，如果有更新就重新编译。在很多时候可以关闭检查模板是否更新的开关，减少文件IO.提高反应速度:$smarty-&#62;compile_check=0.
关于I/O&#160; 1.磁盘IO:可以通过系统的一些工具更好的了解磁盘的IO情况，可以用iostat查看当前的系统的磁盘IO值.这装命令:sudo apt-get install sysstat&#160; 2.网络IO:网络上的能够达到的带宽受限于当网络中速度最慢的设备。netstat是最好的查看网络状态的命令。网络配置上好的做法是根据网络的用途，为机配置多个子网，这样能提高网络IO的速度，当然这样就要装多个网卡，在简单的web服务器与数据库服务器安装中，可以建一个内部数据流通访问的子网，比如访问数据库。如果有主从复制数据库，也可以单为主从提供一个子网，在一般的系统中好像没有这个必要。&#160; 3.内存IO:内存IO基本不可再提高，不过内存的带宽是线性扩展的，最好的增加内存吞量的办法就是增加更多机器.还有一点要注意的是在选硬件的时候。由于AMD64体系结构在内存DIMM和每个处理器之间都提供一个独立的总线，能够为内存传输提供更多的并行能力。在谈内存的时候不能不谈的一个名字是swap,swap是当操作系统没有足够的空闲物理内存的时候，它将内存的一页交换到磁盘来释放更多的物理内存，当下次需要交换内容时，它被换回物理内存。但是swap是十分缓慢，会影响机器处理的速度。可以用free 或者 vmstat查看机器上swap的使用情况。为了避免使用swap两种比较直接的方案就是提供更多的内存或者少分配一些内存，让一台机器做更少的事情。比如有1G的内存，系统需要100M,如果你运行mysql,你应该在运行时把mysql的运行内存设置成850M就可以了。还有一种比较极端的方案就是禁用swap.
关于数据库：&#160; 在web应用程序中，你往往会发现最大的瓶颈是数据库的吞吐量。数据库的优化是一个很深的学问，在这里就不多说了，等自己研究明白之时与大家分享。&#160; &#160; 
更新： xdebug_start_profiling xdebug_dump_function_trace，这两个方法只有xdebug1.0支持。2。0之后只输出profiling数据。供其它分析工具用。
]]></description>
		<wfw:commentRss>http://guogoul.com/2008/10/26/sys_bottleneck/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
