﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;b style="font-size:28px"&gt;Derek.&lt;font style='color:red'&gt;Guo&lt;/font&gt; BLOG&lt;/b&gt;-随笔分类-Linux/Unix</title><link>http://www.blogjava.net/envoydada/category/32100.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 18 Dec 2013 04:56:34 GMT</lastBuildDate><pubDate>Wed, 18 Dec 2013 04:56:34 GMT</pubDate><ttl>60</ttl><item><title>扩容kvm虚拟机镜像磁盘空间</title><link>http://www.blogjava.net/envoydada/archive/2013/12/18/407732.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Wed, 18 Dec 2013 04:22:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2013/12/18/407732.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/407732.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2013/12/18/407732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/407732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/407732.html</trackback:ping><description><![CDATA[<div>1. Shutdown the instance<br /><br />
<div>2. Get current image information<br />
<span style="background-color: #99ccff; font-size: 13px;">#&nbsp;virt</span><span style="background-color: #99ccff; font-size: 13px;">-</span><span style="background-color: #99ccff; font-size: 13px;">filesystems&nbsp;</span><span style="background-color: #99ccff; font-size: 13px;">--</span><span style="font-size: 13px; color: #0000ff; background-color: #99ccff;">long</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #99ccff; font-size: 13px;">--</span><span style="background-color: #99ccff; font-size: 13px;">parts&nbsp;</span><span style="background-color: #99ccff; font-size: 13px;">--</span><span style="background-color: #99ccff; font-size: 13px;">blkdevs&nbsp;</span><span style="background-color: #99ccff; font-size: 13px;">-</span><span style="background-color: #99ccff; font-size: 13px;">h&nbsp;</span><span style="background-color: #99ccff; font-size: 13px;">-</span><span style="background-color: #99ccff; font-size: 13px;">a&nbsp;windows2003.img</span><span style="background-color: #eeeeee; font-size: 13px;"><br />
</span>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MBR&nbsp;&nbsp;Size&nbsp;&nbsp;Parent<br />
/dev/sda1&nbsp;&nbsp;partition&nbsp;&nbsp;07&nbsp;&nbsp;&nbsp;4.0G&nbsp;&nbsp;/dev/sda<br />
/dev/sda2&nbsp;&nbsp;partition&nbsp;&nbsp;0f&nbsp;&nbsp;&nbsp;1.0K&nbsp;&nbsp;/dev/sda<br />
/dev/sda5&nbsp;&nbsp;partition&nbsp;&nbsp;07&nbsp;&nbsp;&nbsp;6.0G&nbsp;&nbsp;/dev/sda<br />
/dev/sda&nbsp;&nbsp;&nbsp;device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;10G&nbsp;&nbsp;&nbsp;-</div>
</div><br /><div>3. virt-rezise<br /><div><span style="background-color: #99ccff;"># qemu-img create -f raw new.img 25G<br /></span><div><span style="background-color: #99ccff;"># virt-resize --expand /dev/sda1 old.img new.img</span></div></div></div></div><img src ="http://www.blogjava.net/envoydada/aggbug/407732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2013-12-18 12:22 <a href="http://www.blogjava.net/envoydada/archive/2013/12/18/407732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分布式文件系统Glusterfs</title><link>http://www.blogjava.net/envoydada/archive/2013/08/09/402633.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Fri, 09 Aug 2013 08:00:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2013/08/09/402633.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/402633.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2013/08/09/402633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/402633.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/402633.html</trackback:ping><description><![CDATA[<div>### &nbsp;Installing Gluster</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;-P&nbsp;/etc/yum.repos.d&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo</span></div></div><div></div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->yum&nbsp;install&nbsp;glusterfs{-fuse,-server}</div></div><div><br /># 查看gluster版本信息</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->glusterfs&nbsp;-V</div></div><div></div><div># 启动停止服务</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->service&nbsp;glusterd&nbsp;start<br />service&nbsp;glusterd&nbsp;stop</div></div><div></div><div># 存储主机加入信任存储池</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;peer&nbsp;probe&nbsp;fs-server-2<br />gluster&nbsp;peer&nbsp;probe&nbsp;fs-server-3</div></div><div></div><div># 查看状态</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;peer&nbsp;status</div></div><div></div><div># 五中类型的volume可以被创建：</div><div>&nbsp; &nbsp; Distributed：分布式卷，文件通过hash算法随机的分布到由bricks组成的卷上。</div><div>&nbsp; &nbsp; Replicated：复制式卷，类似raid1，replica数必须等于volume中brick所包含的存储服务器数，可用性高。</div><div>&nbsp; &nbsp; Striped：条带式卷，类似与raid0，stripe数必须等于volume中brick所包含的存储服务器数，文件被分成数据块，以Round Robin的方式存储在bricks中，并发粒度是数据块，大文件性能好。</div><div>&nbsp; &nbsp; Distributed Striped：分布式的条带卷，volume中brick所包含的存储服务器数必须是stripe的倍数(&gt;=2倍)，兼顾分布式和条带式的功能。</div><div>&nbsp; &nbsp; Distributed Replicated：分布式的复制卷，volume中brick所包含的存储服务器数必须是 replica 的倍数(&gt;=2倍)，兼顾分布式和复制式的功能。</div><div></div><div></div><div># 创建分布卷</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;create&nbsp;gv0&nbsp;fs-server-1:/data/gfs&nbsp;fs-server-2:/data/gfs</div></div><div># 创建复制卷</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;create&nbsp;gv0&nbsp;replica&nbsp;2&nbsp;fs-server-1:/data/gfs&nbsp;fs-server-2:/data/gfs</div></div><div># 创建条带卷</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;create&nbsp;gv0&nbsp;stripe&nbsp;2&nbsp;fs-server-1:/data/gfs&nbsp;fs-server-2:/data/gfs</div></div><div></div><div># 启动卷</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;start&nbsp;gv0</div></div><div></div><div># 查看卷</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;info gv0</div></div><div></div><div>#如果以后要添加服务器，可以使用add-brick命令：</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;add-brick&nbsp;gv0&nbsp;fs-server-3:/data/gfs&nbsp;fs-server-4:/data/gfs</div></div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->gluster&nbsp;volume&nbsp;remove-brick&nbsp;VOLNAME&nbsp;BRICK</div></div><div></div><div>注意：当你给分布式复制卷和分布式条带卷中增加bricks时，你增加的bricks的数目必须是复制或者条带数目的倍数，例如：你给一个分布式复制卷的replica为2，你在增加bricks的时候数量必须为2、4、6、8等。</div><div>&nbsp; &nbsp; &nbsp; 当移除分布式复制卷或者分布式条带卷的时候，移除的bricks数目必须是replica或者stripe的倍数。例如：一个分布式条带卷的stripe是2，当你移除bricks的时候必须是2、4、6、8等。</div><div></div><div>#挂载glusterfs</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->mount&nbsp;-t&nbsp;glusterfs&nbsp;fs-server-1:/gv0&nbsp;/mnt/gfs<br />mount&nbsp;-t&nbsp;nfs&nbsp;fs-server-1:/gv0&nbsp;/mnt/gfs<br />mount&nbsp;-v&nbsp;-t&nbsp;nfs&nbsp;-o&nbsp;mountproto=tcp,vers=3&nbsp;fs-server-1:/gv0&nbsp;/mnt/gfs-nfs</div></div><img src ="http://www.blogjava.net/envoydada/aggbug/402633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2013-08-09 16:00 <a href="http://www.blogjava.net/envoydada/archive/2013/08/09/402633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KVM虚拟机克隆网络问题</title><link>http://www.blogjava.net/envoydada/archive/2013/08/07/402525.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Wed, 07 Aug 2013 10:14:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2013/08/07/402525.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/402525.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2013/08/07/402525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/402525.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/402525.html</trackback:ping><description><![CDATA[<span style="font-family: Monaco, Consolas, '&quot;Lucida Console&quot;', '&quot;Courier New&quot;', serif; font-size: 10pt; line-height: 21.59375px; background-color: #f7f7f7;">克隆KVM虚拟机时，网卡启动报错<br />
</span><span style="font-family: Monaco, Consolas, '&quot;Lucida Console&quot;', '&quot;Courier New&quot;', serif; font-size: 10pt; line-height: 21.59375px; background-color: #f7f7f7;">Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization<br />
</span><span style="font-family: Monaco, Consolas, '&quot;Lucida Console&quot;', '&quot;Courier New&quot;', serif; font-size: 10pt; line-height: 21.59375px; background-color: #f7f7f7;">查看</span><span style="font-family: Monaco, Consolas, '&quot;Lucida Console&quot;', '&quot;Courier New&quot;', serif; font-size: 10pt; line-height: 21.59375px; background-color: #f7f7f7;">/etc/udev/rules.d/70-persistent-net.rules文件<br />
</span>
<div><span style="font-size: 10pt;">原来UDEV这里把克隆前的MAC当成了当前虚拟机的eth0 MAC，而重新生成的是eth1的MAC。</span></div>
<span style="font-family: Monaco, Consolas, '&quot;Lucida Console&quot;', '&quot;Courier New&quot;', serif; font-size: 10pt; line-height: 21.59375px; background-color: #f7f7f7;">删除原虚拟机MAC地址行， 修改新MAC地址行的eth1为eth0; 同时修改ifcfg-eth0文件里的HWADDR为新MAC地址。重启网络或系统。</span><span style="font-family: Monaco, Consolas, '&quot;Lucida Console&quot;', '&quot;Courier New&quot;', serif; font-size: 12px; line-height: 21.59375px; background-color: #f7f7f7;"><br />
<br />
</span><img src ="http://www.blogjava.net/envoydada/aggbug/402525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2013-08-07 18:14 <a href="http://www.blogjava.net/envoydada/archive/2013/08/07/402525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 sendfile() 提升网络文件发送性能</title><link>http://www.blogjava.net/envoydada/archive/2011/12/29/367529.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Thu, 29 Dec 2011 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2011/12/29/367529.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/367529.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2011/12/29/367529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/367529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/367529.html</trackback:ping><description><![CDATA[<div><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">我们平时通过网络发送文件时会用到的两个系统调用：<br /><code style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; background-position: initial initial; background-repeat: initial initial; ">read(file, tmp_buf, len);<br />write(socket, tmp_buf, len);</code></p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">调用过程示意图如下：<br /><img src="http://hily.me/blog/wp-content/uploads/2011/01/6345f1.jpg" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; "  alt="" /></p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">在用户空间调用 read() 读取文件时发生两次内存拷贝：</p><ol style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; "><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">DMA引擎将文件读取到内核的文件缓冲区</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">调用返回用户空间时将内核的文件缓冲区的数据复制到用户空间的缓冲区</li></ol><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">接着调用 write() 把数据写入 socket 时，又发生了两次内存拷贝：</p><ol style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; "><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">将用户空间的缓冲区的数据复制到内核的 socket 缓冲区</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">将内核 socket 缓冲区的数据复制到网络协议引擎</li></ol><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">也就是说，在整个文件发送的过程中，发生了四次内存拷贝。<br />然后，数据读取到用户空间后并没有做过任何加工处理，因此通过网络发送文件时，根本没有必要把文件内容复制到用户空间。</p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">于是引入了 mmap()：<br /><code style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; background-position: initial initial; background-repeat: initial initial; ">tmp_buf = mmap(file, len);<br />write(socket, tmp_buf, len);</code></p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">调用过程示意图：<br /><img src="http://hily.me/blog/wp-content/uploads/2011/01/6345f2.jpg" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; "  alt="" /></p><ol style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; "><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">调用 mmap() 时会将文件直接读取到内核缓冲区，并把内核缓冲区直接共享到用户空间</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">调用 write() 时，直接将内核缓冲区的数据复制到网络协议引擎</li></ol><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">这样一来，就少了用户空间和内核空间之间的内存复制了。<br />这种方式会有个问题，当前进程在调用 write() 时，另一个进程把文件清空了，程序就会报出 SIGBUS 类型错误。</p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">Linux Kernel 2.1 引进了 sendfile()，只需要一个系统调用来实现文件发送。<br /><code style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; background-position: initial initial; background-repeat: initial initial; ">sendfile(socket, file, len);</code></p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">调用过程示意图：<br /><img src="http://hily.me/blog/wp-content/uploads/2011/01/6345f3.jpg" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; "  alt="" /></p><ol style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; "><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">调用 sendfile() 时会直接在内核空间把文件读取到内核的文件缓冲区</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">将内核的文件缓冲区的数据复制到内核的 socket 缓冲区中</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">将内核的 socket 缓冲区的数据复制到网络协议引擎</li></ol><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">从性能上看，这种方式只是少了一个系统调用而已，还是做了3次拷贝操作。</p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">Linux Kernel 2.4 改进了 sendfile()，调用接口没有变化：<br /><code style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; background-position: initial initial; background-repeat: initial initial; ">sendfile(socket, file, len);</code></p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">调用过程示意图：<br /><img src="http://hily.me/blog/wp-content/uploads/2011/01/6345f4.jpg" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; "  alt="" /></p><ol style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; "><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">调用 sendfile() 时会直接在内核空间把文件读取到内核的文件缓冲区</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">内核的 socket 缓冲区中保存的是当前要发送的数据在内核的文件缓冲区中的位置和偏移量</li><li style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; ">DMA gather copy 将内核的文件缓冲区的数据复制到网络协议引擎</li></ol><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">这样就只剩下2次拷贝啦。</p><p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; ">在许多 http server 中，都引入了 sendfile 的机制，如 nginx、lighttpd 等，它们正是利用 sendfile() 这个特性来实现高性能的文件发送的。</p></div><img src ="http://www.blogjava.net/envoydada/aggbug/367529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2011-12-29 21:32 <a href="http://www.blogjava.net/envoydada/archive/2011/12/29/367529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web服务器性能/压力测试工具http_load、webbench、ab、Siege(转)</title><link>http://www.blogjava.net/envoydada/archive/2011/03/15/346300.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Tue, 15 Mar 2011 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2011/03/15/346300.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/346300.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2011/03/15/346300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/346300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/346300.html</trackback:ping><description><![CDATA[<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; "><strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">一、http_load</strong></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">程序非常小，解压后也不到100K</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">http_load以并行复用的方式运行，用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">具，它可以以一个单一的进程运行，一般不会把客户机搞死。还可以测试HTTPS类的网站请求。</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">下载地址：<a href="http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
安装很简单<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#tar zxvf http_load-12mar2006.tar.gz<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#cd http_load-12mar2006<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#make &amp;&amp; make install</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">命令格式：http_load&nbsp; -p 并发访问进程数&nbsp; -s 访问时间&nbsp; 需要访问的URL文件</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">参数其实可以自由组合，参数之间的选择并没有什么限制。比如你写成http_load -parallel 5 -seconds</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">300 urls.txt也是可以的。我们把参数给大家简单说明一下。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-parallel 简写-p ：含义是并发的用户进程数。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-fetches 简写-f ：含义是总计的访问次数<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-rate&nbsp;&nbsp;&nbsp; 简写-p ：含义是每秒的访问频率<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-seconds简写-s ：含义是总计的访问时间</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">准备URL文件：urllist.txt，文件格式是每行一个URL，URL最好超过50－100个测试效果比较好.文件格式</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">如下：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<a href="http://www.vpser.net/uncategorized/choose-vps.html" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net/uncategorized/choose-vps.html</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<a href="http://www.vpser.net/vps-cp/hypervm-tutorial.html" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net/vps-cp/hypervm-tutorial.html</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<a href="http://www.vpser.net/coupons/diavps-april-coupons.html" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net/coupons/diavps-april-coupons.html</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<a href="http://www.vpser.net/security/vps-backup-web-mysql.html" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net/security/vps-backup-web-mysql.html</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
例如：</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">http_load -p 30 -s 60&nbsp; urllist.txt<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
参数了解了，我们来看运行一条命令来看看它的返回结果<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
命令：% ./http_load -rate 5 -seconds 10 urls说明执行了一个持续时间10秒的测试，每秒的频率为5。</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">-response: 63.5362 mean, 81.624 max, 57.803 minHTTP response codes: code 200 — 49&nbsp;</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">结果分析：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
1．49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
说明在上面的测试中运行了49个请求，最大的并发进程数是2，总计传输的数据是289884bytes，运行的时间是10.0148秒<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
2．5916 mean bytes/connection说明每一连接平均传输的数据量289884/49=5916<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
3．4.89274 fetches/sec, 28945.5 bytes/sec<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
说明每秒的响应请求为4.89274，每秒传递的数据为28945.5 bytes/sec<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
4．msecs/connect: 28.8932 mean, 44.243 max, 24.488 min说明每连接的平均响应时间是28.8932 msecs</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">，最大的响应时间44.243 msecs，最小的响应时间24.488 msecs<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
5．msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
6、HTTP response codes: code 200 — 49&nbsp;&nbsp;&nbsp;&nbsp; 说明打开响应页面的类型，如果403的类型过多，那可能</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">要注意是否系统遇到了瓶颈。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
特殊说明：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
测试结果中主要的指标是 fetches/sec、msecs/connect 这个选项，即服务器每秒能够响应的查询次数，</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">用这个指标来衡量性能。似乎比 apache的ab准确率要高一些，也更有说服力一些。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Qpt-每秒响应用户数和response time，每连接响应用户时间。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析，我们还需要对服务器的</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">cpu、men进行分析，才能得出结论</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">&nbsp;</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; "><strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">二、webbench</strong></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">webbench是Linux下的一个网站压力测试工具，最多可以模拟3万个并发连接去测试网站的负载能力。下载地址可以到google搜，我这里给出一个<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
下载地址：<a href="http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
这个程序更小，解压后不到50K，呵呵<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
安装非常简单<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#tar zxvf webbench-1.5.tar.gz<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#cd webbench-1.5<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#make &amp;&amp; make install<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
会在当前目录生成webbench可执行文件，直接可以使用了</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">用法：</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">webbench -c 并发数 -t 运行测试时间 URL<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
如：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
webbench -c 5000 -t 120&nbsp;<a href="http://www.vpser.net/" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; "><strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">三、ab</strong><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
ab是apache自带的一款功能强大的测试工具<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
安装了apache一般就自带了，<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
用法可以查看它的说明</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">$ ./ab<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
./ab: wrong number of arguments<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Usage: ./ab [options] [http://]hostname[:port]/path<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Options are:<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-n requests Number of requests to perform<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-c concurrency Number of multiple requests to make<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-t timelimit Seconds to max. wait for responses<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-p postfile File containing data to POST<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-T content-type Content-type header for POSTing<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-v verbosity How much troubleshooting info to print<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-w Print out results in HTML tables<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-i Use HEAD instead of GET<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-x attributes String to insert as table attributes<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-y attributes String to insert as tr attributes<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-z attributes String to insert as td or th attributes<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-C attribute Add cookie, eg. &#8216;Apache=1234. (repeatable)<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-H attribute Add Arbitrary header line, eg. &#8216;Accept-Encoding: gzip&#8217;<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Inserted after all normal header lines. (repeatable)<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-A attribute Add Basic WWW Authentication, the attributes<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
are a colon separated username and password.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-P attribute Add Basic Proxy Authentication, the attributes<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
are a colon separated username and password.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-X proxy:port Proxyserver and port number to use<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-V Print version number and exit<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-k Use HTTP KeepAlive feature<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-d Do not show percentiles served table.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-S Do not show confidence estimators and warnings.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-g filename Output collected data to gnuplot format file.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-e filename Output CSV file with percentages served<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-h Display usage information (this message)<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
参数众多，一般我们用到的是-n 和-c<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
例如：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
./ab -c 1000 -n 100&nbsp;<a href="http://www.vpser.net/index.php" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net/index.php</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">这个表示同时处理1000个请求并运行100次index.php文件.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">四、Siege<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
</strong>一款开源的压力测试工具，可以根据配置对一个WEB站点进行多用户的并发访问，记录每个用户所有请求过程的相应时间，并在一定数量的并发访问下重复进行。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
官方：<a href="http://www.joedog.org/" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.joedog.org/</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Siege下载：<a href="http://soft.vpser.net/test/siege/siege-2.67.tar.gz" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://soft.vpser.net/test/siege/siege-2.67.tar.gz</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
解压：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
# tar -zxf siege-2.67.tar.gz<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
进入解压目录：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
# cd siege-2.67/<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
安装：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#./configure ; make<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
#make install</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">使用<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
siege -c 200 -r 10 -f example.url<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
-c是并发量，-r是重复次数。 url文件就是一个文本，每行都是一个url，它会从里面随机访问的。</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">example.url内容:</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; "><a href="http://www.licess.cn/" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.licess.cn</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<a href="http://www.vpser.net/" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.vpser.net</a><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
<a href="http://soft.vpser.net/" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://soft.vpser.net</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: 22px; ">结果说明<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Lifting the server siege&#8230; done.<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Transactions: 3419263 hits //完成419263次处理<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Availability: 100.00 % //100.00 % 成功率<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Elapsed time: 5999.69 secs //总共用时<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Data transferred: 84273.91 MB //共数据传输84273.91 MB<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Response time: 0.37 secs //相应用时1.65秒：显示网络连接的速度<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次处理：表示服务器后<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Throughput: 14.05 MB/sec //平均每秒传送数据<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Concurrency: 213.42 //实际最高并发数<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Successful transactions: 2564081 //成功处理次数<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Failed transactions: 11 //失败处理次数<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Longest transaction: 29.04 //每次传输所花最长时间<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
Shortest transaction: 0.00 //每次传输所花最短时间</p>
<img src ="http://www.blogjava.net/envoydada/aggbug/346300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2011-03-15 11:47 <a href="http://www.blogjava.net/envoydada/archive/2011/03/15/346300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>liunx下安装Subversion</title><link>http://www.blogjava.net/envoydada/archive/2010/04/08/317711.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Thu, 08 Apr 2010 05:37:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2010/04/08/317711.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/317711.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2010/04/08/317711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/317711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/317711.html</trackback:ping><description><![CDATA[安装Apache：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&nbsp;#&nbsp;tar&nbsp;&#8211;zvxf&nbsp;httpd</span><span style="color: #000000">-</span><span style="color: #000000">2.2</span><span style="color: #000000">.</span><span style="color: #000000">9</span><span style="color: #000000">.tar.gz<br />
&nbsp;#&nbsp;cd&nbsp;httpd</span><span style="color: #000000">-</span><span style="color: #000000">2.2</span><span style="color: #000000">.</span><span style="color: #000000">9</span><span style="color: #000000"><br />
&nbsp;#&nbsp;.</span><span style="color: #000000">/</span><span style="color: #000000">configure&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">prefix</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache2&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">with</span><span style="color: #000000">-</span><span style="color: #000000">apr</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apr</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">apr</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">config&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">with</span><span style="color: #000000">-</span><span style="color: #000000">apr</span><span style="color: #000000">-</span><span style="color: #000000">util</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apr</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">apu</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">config&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">enable</span><span style="color: #000000">-</span><span style="color: #000000">modules</span><span style="color: #000000">=</span><span style="color: #000000">so&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;DSO模式安装apache&nbsp;（或&nbsp;--enable-so）<br />
&nbsp;&nbsp;<span style="color: #000000">--enable-dav&nbsp;--enable-maintainer-mode&nbsp;--enable-rewrite&nbsp;--enable-ssl<br />
&nbsp;#&nbsp;make<br />
&nbsp;#&nbsp;make&nbsp;install</span></span></div>
<br />
安装Subversion：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&nbsp;#tar&nbsp;&#8211;zvxf&nbsp;subversion</span><span style="color: #000000">-</span><span style="color: #000000">1.5</span><span style="color: #000000">.</span><span style="color: #000000">1</span><span style="color: #000000">.tar.gz<br />
&nbsp;#cd&nbsp;&nbsp;subversion</span><span style="color: #000000">-</span><span style="color: #000000">1.5</span><span style="color: #000000">.</span><span style="color: #000000">1</span><span style="color: #000000"><br />
&nbsp;#.</span><span style="color: #000000">/</span><span style="color: #000000">configure&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">prefix</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">svn&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">with</span><span style="color: #000000">-</span><span style="color: #000000">apxs</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">apxs&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">with</span><span style="color: #000000">-</span><span style="color: #000000">apr</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apr</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">apr</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">config&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">with</span><span style="color: #000000">-</span><span style="color: #000000">apr</span><span style="color: #000000">-</span><span style="color: #000000">util</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apr</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">apu</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">config&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">enable</span><span style="color: #000000">-</span><span style="color: #000000">maintainer</span><span style="color: #000000">-</span><span style="color: #000000">mode<br />
&nbsp;#make<br />
&nbsp;#make&nbsp;install</span></div>
<br />
&nbsp;确定一下svn有没有安装成功<br />
&nbsp;#/usr/local/svn/bin/svnserve --version<br />
&nbsp;会看到相关版本信息！<br />
<br />
配置服务器：<br />
&nbsp;(1). 创建一个用户，如：svnroot;<br />
&nbsp;(2). 以svnroot用户登录<br />
&nbsp;&nbsp;
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">$mkdir&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">home</span><span style="color: #000000">/</span><span style="color: #000000">svnroot</span><span style="color: #000000">/</span><span style="color: #000000">repository<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;$cd&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">subversion</span><span style="color: #000000">/</span><span style="color: #000000">bin<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;$.</span><span style="color: #000000">/</span><span style="color: #000000">svnadmin&nbsp;create&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">home</span><span style="color: #000000">/</span><span style="color: #000000">svnroot</span><span style="color: #000000">/</span><span style="color: #000000">repository<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;$&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache2</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">htpasswd&nbsp;&#8211;c&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">home</span><span style="color: #000000">/</span><span style="color: #000000">svnroot</span><span style="color: #000000">/</span><span style="color: #000000">repository</span><span style="color: #000000">/</span><span style="color: #000000">passwprd.conf&nbsp;username&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">来创建的&nbsp;会再要求输入两次密码</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;$cd&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">home</span><span style="color: #000000">/</span><span style="color: #000000">svnroot</span><span style="color: #000000">/</span><span style="color: #000000">repository</span><span style="color: #000000">/</span><span style="color: #000000">test<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;$ls&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">ll<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
&nbsp; //看看是不是多了些文件，如果是则说明Subversion安装成功了<br />
&nbsp; //这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion 仓库中去，<br />
&nbsp; //提交后的修订版为1。<br />
&nbsp; $./svn import 你想要导入的文件位置 file:///home/svnroot/repository &#8211;m "注释"<br />
&nbsp; //不让其他人有该目录的权限<br />
&nbsp; $ chmod 700 /home/svnroot/repository<br />
<br />
&nbsp;(3). 修改Apache配置文件<br />
&nbsp; # cd /usr/local/apadche2/bin<br />
&nbsp; # vi /usr/local/apache2/conf/httpd.conf<br />
&nbsp; //在最下面添加<br />
&nbsp; LoadModule dav_svn_module modules/mod_dav_svn.so<br />
&nbsp; LoadModule authz_svn_module modules/mod_authz_svn.so<br />
&nbsp; &lt;Location /svn&gt;<br />
&nbsp; DAV svn<br />
&nbsp; #SVNParentPath /home/svnroot/repository/ //svn父目录<br />
&nbsp; SVNPath /home/svnroot/repository/test //与svn中bin中svnadmin创建应一样 否则会进不到目录<br />
&nbsp; #AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件<br />
&nbsp; AuthType Basic //连接类型设置<br />
&nbsp; AuthName "Subversion.zoneyump" //连接框提示<br />
&nbsp; AuthUserFile /home/svnroot/repository/passwprd.conf //用户配置文件<br />
&nbsp; Require valid-user //采用何种认证<br />
&nbsp; &lt;/Location&gt;<br />
&nbsp; //其中authfile是通过"htpasswd来创建的那个密码文件<br />
&nbsp; //"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它，<br />
&nbsp; //则只能第一个用户可以访问新建库<br />
&nbsp; <br />
&nbsp; 找到以下内容<br />
&nbsp; User daemon<br />
&nbsp; Group daemon<br />
&nbsp; 把上述内容改成:<br />
&nbsp; User svnroot<br />
&nbsp; Group svnroot<br />
&nbsp; <br />
&nbsp; 保存<br />
<br />
&nbsp;(4). 添加svn用户<br />
&nbsp; 创建<br />
&nbsp; $htpasswd -c /home/svnroot/repository/authfile username<br />
&nbsp; 会要求输两次密码<br />
&nbsp; <br />
&nbsp; 在/home/svnroot/repository/conf会生成<br />
&nbsp; authz passwd svnserve.conf<br />
&nbsp; $cd /home/svnroot/repository/conf<br />
&nbsp; $vi authz<br />
&nbsp; 添加如下<br />
&nbsp; [groups] /*这个表示群组设置<br />
&nbsp; Admin=usr1,user2 /*这个表示admin群组里的成员 user1,user2<br />
&nbsp; Develop=u1, u2 /*这个表示Develop群组里的成员 u1,u2<br />
&nbsp; [www:/] /*这表示，仓库www的根目录下的访问权限<br />
&nbsp; user1 = rw /*www仓库user1用户具有读和写权限<br />
&nbsp; user2 = r /* www仓库userl用户具只有读权限<br />
&nbsp; @develop=rw /*这表示 群 develop的成员都具有读写权限<br />
&nbsp; [/] /*这个表示在所有仓库的根目录下<br />
&nbsp; * = r /*这个表示对所有的用户都具有读权限<br />
&nbsp; 注意：在编辑authz文件时，所有行都必须要顶头写，不能有缩行<br />
<br />
&nbsp;(5). 重起Apache<br />
&nbsp; #/usr/local/apache2/bin/apachectl &#8211;k restart<br />
<br />
&nbsp;(6). 启动svn服务<br />
&nbsp; #/usr/local/svn/bin/svnserve -d -r /home/svnroot/repository<br />
&nbsp; -d 表示以 daemon 方式(后台运行)运行<br />
&nbsp; -r /svn/project 指定根目录是/home/svnroot/repository<br />
&nbsp; 检查服务器是否启动正常:<br />
&nbsp; #ps &#8211;ef|grep svnserve<br />
<br />
&nbsp;(7). 后序工作<br />
&nbsp; 在/etc/profile的结尾设置一些svn启动时要做的工作 <br />
&nbsp; # start apache server for svn <br />
&nbsp; /usr/sbin/apachectl start <br />
&nbsp; export SVN_EDITOR=vi 
 <img src ="http://www.blogjava.net/envoydada/aggbug/317711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2010-04-08 13:37 <a href="http://www.blogjava.net/envoydada/archive/2010/04/08/317711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Window下配置SVN服务器与客户端(转)</title><link>http://www.blogjava.net/envoydada/archive/2008/07/29/218323.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Tue, 29 Jul 2008 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2008/07/29/218323.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/218323.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2008/07/29/218323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/218323.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/218323.html</trackback:ping><description><![CDATA[如何配置svn服务器：前提条件：<br />
下载最新的svn服务器:<br />
<a href="http://files.cnblogs.com/changchangcc520/svn-1.4.5-setup.rar">svn-1.4.5-setup.rar</a><br />
下载最新的svn客户端:<br />
<a href="http://files.cnblogs.com/changchangcc520/TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.rar">TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.rar</a><br />
下载配置svn服务成window service自动运行的工具:<br />
<a href="http://files.cnblogs.com/changchangcc520/SVNService.rar">SVNService.rar</a><br />
步骤:<br />
1.下载并安装svn1.4.5-setup.rar假设你安装在:G:\Program Files\Subversion目录下。<br />
2。建立Repository,可以打开命令窗口，输入svnadmin create G:\SVNRoot\Projects\searchz,目录自己定。<br />
3.配置Repository,进入Repository目录，这里是G:\SVNRoot\Projects\search,你会看到conf目录，进入该目录，你会看到<br />
svnserver.conf和passwd两个文件.<br />
对两个文件作如下修改:<br />
svnserve.conf<a class="postTitle2" id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/changchangcc520/archive/2007/11/06/950867.html">Window下配置SVN服务器与客户端</a> <br />
[general]<br />
### These options control access to the repository for unauthenticated<br />
### and authenticated users. Valid values are "write", "read",<br />
### and "none". The sample settings below are the defaults.<br />
anon-access = read<br />
auth-access = write<br />
### The password-db option controls the location of the password<br />
### database file. Unless you specify a path starting with a /,<br />
### the file's location is relative to the conf directory.<br />
### Uncomment the line below to use the default password file.<br />
password-db = passwd<br />
<br />
<br />
含义是: <br />
未验证用户无任何权限 (如果把none修改为read就是给予读权限) <br />
已验证用户给予写权限 (当然也能读) <br />
密码数据存放到passwd文件中 <br />
passwd<br />
[users]<br />
harry = harryssecret<br />
sally = sallyssecret<br />
weip=weip<br />
注意最后passwd中的配置，一个用户以行，如:weip=weip表示用户名为weip，密码为weip的一个用户。 4.启动subversion服务<br />
两种方式启动:<br />
(1).命令方式:svnserve -d -r G:\SVNRoot\Projects默认端口是3690,如果不幸这个端口被别别的程序暂用，可以通过选项 --<br />
listem --port=绑定端口.<br />
(2)subversion服务:默认情况下载window service中视没有的，必须通过svnservice -install -d -r <br />
G:\SVNRoot\Projects，(svnservice必须和svnserve在同一个目录下)<br />
<br />
再用net start svnservice来将其作为服务运行，建议打开控制面板找到SVNService，将其启动类型设置为自动。这样服务器的配置就架构好了。<br />
你现在可以用客户端的TortoiseSVN来访问刚刚配置的服务器了，url格式: <br />
svn://ip地址/Repository名,这里是:svn://127.0.0.1/searchz.<br />
客户端的简单日常操作: <br />
要取得当前的最新版本,SVN updated. <br />
要修改更新到SVN，选择SVN submit即可(谨慎的话先更新到最新版本后再提交).<br />
<img src ="http://www.blogjava.net/envoydada/aggbug/218323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2008-07-29 11:56 <a href="http://www.blogjava.net/envoydada/archive/2008/07/29/218323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Solaris系统进程的查看和管理</title><link>http://www.blogjava.net/envoydada/archive/2008/06/11/207028.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Wed, 11 Jun 2008 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2008/06/11/207028.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/207028.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2008/06/11/207028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/207028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/207028.html</trackback:ping><description><![CDATA[<font size="2">1、什么是进程？ <br />
进程：可并发执行的程序在一定数据集合上的运行过程。进程即是资源分配的基本单位，也是调度和分派的基本单位。 <br />
<br />
2、UNIX操作系统进程调度算法： <br />
多级反馈调度队列算法。 <br />
<br />
3、进程状态：创建、初始、就绪（活动、静止）、执行、阻塞（活动、静止）、结束。 <br />
<br />
4、进程监控命令： <br />
ps 命令和进程工具/usr/proc/bin下的工具级。 <br />
可以将ps和grep命令组合使用来搜索特定的信息。 <br />
5、/usr/proc/bin的命令介绍： <br />
pstop 停止进程 <br />
prun pid 重新启动进程 <br />
ptime pid 使用微状态计算进程时间 <br />
pwait pid 等待指定的进程终止. <br />
pcred pid 显示可信度 <br />
pfiles pid 显示已打开文件的fstat 和fcntl 信息 <br />
pflags pid 显示每个lwp 的/proc 跟踪标志,等待和持有信号量以及其他状 <br />
态信息 <br />
pldd pid 显示链接到每个进程的动态链接库 <br />
pmap pid 显示地址映射空间 <br />
psig pid 显示信号操作 <br />
pstack pid 显示每个lwp 的十六进制与符号堆跟踪 <br />
ptree pid 显示包含指定PID 的进程树 <br />
pwdx oid 显示当前工作目录 <br />
<br />
6、ps命令格式： <br />
ps [ -aAdeflcjLPy ] [ -o format ] [ -t termlist ] [ -u userlist ] [ -U userlist ] [ -G grouplist ] [ -p proclist ] [ -g pgrplist ] [ -s sidlist ] <br />
<br />
7、常用的参数： <br />
-e 输出所有进程报告 <br />
-f 在第一栏显示进程所有者的名字(不是UID)。该选项关闭-l、&#8211;t、&#8211;s 和&#8211;r 选项,打开-a 选项。 <br />
-l 产生一个长的输出报告,只是不包含STIME 字段 <br />
<br />
8、ps -el的相关输出参数解释： <br />
bash-2.05$ ps -el <br />
<br />
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD <br />
19 T 0 0 0 0 0 SY ? 0 ? 0:16 sched <br />
8 S 0 1 0 0 40 20 ? 151 ? ? 0:00 init <br />
19 S 0 2 0 0 0 SY ? 0 ? ? 0:00 pageout <br />
19 S 0 3 0 0 0 SY ? 0 ? ? 0:30 fsflush <br />
8 S 0 377 1 0 40 20 ? 223 ? ? 0:00 sac <br />
8 S 0 378 1 0 40 20 ? 224 ? console 0:00 ttymon <br />
8 S 0 131 1 0 40 20 ? 289 ? ? 0:00 rpcbind <br />
<br />
F 十六进制标志，它们加起来表示进程的当前状态。如下所述： <br />
00 进程终止，而且它们在进程表中的空间已释放。 <br />
01 系统进程，长驻内存 <br />
02 进程被父进程跟踪 <br />
04 进程被父进程跟踪而且已被停止 <br />
08 该进程无法被信号量唤醒 <br />
10 该进程当前在内存中，而且被锁定直到一个事件完成 <br />
20 进程不能被交换出 <br />
<br />
S 进程当前状态，由以下字母之一显示： <br />
O 当前正在处理器上运行 <br />
S 睡眠；等待I/O事件完成 <br />
R 运行结束 <br />
I 空闲；进程被创建 <br />
Z 僵死。进程已终止 <br />
T 由于父进程跟踪而停止 <br />
X 等待更多的内存 <br />
<br />
UID 进程所有者的用户ID <br />
PID 进程ID <br />
PPID 父进程ID <br />
C 进程的CPU使用情况（即进程占CPU时间的百分比） <br />
PRI 进程优先权方案。较大的数表示较低的优先权 <br />
NI 进程的nice值，该值与优先权方案相关联。使一个进程&#8220;nicer&#8221;意指降低该进程的优先权，以使它不会用尽CPU的时间 <br />
SZ 进程请求的虚拟内存量。这是该系统对内存需求的一个好的指标。 <br />
TTY 启动进程（或者父进程）的终端。带问号的进程无控制终端（通常为系统进程） <br />
TIME 自进程启动以来占CPU时间总量 <br />
COMD 产生进程的命令 <br />
<br />
9、使用ps报告。 <br />
查找属于一个用户的许多相同的工作。Kill命令终止进程。 ps -U username <br />
查找TIME字段中占用了很多CPU时间的进程。这样的进程可能在死循环。ps -e <br />
查找C字段,找出不重要但占用了大量CPU时间的进程。如果该进程获取过多内存，删除该进程。如果许多进程占用了大量内存，则系统可能需要增加内存。ps -el <br />
注意使用越来越多CPU时间的失控进程。可以通过使用-f选项查看进程启动时间（STIME)以及通过查看TIME字段中的CPU时间总量来检测失控进程。 ps -f <br />
<br />
10、删除进程。 <br />
在正常途径无法结束时才使用删除命令。 <br />
#kill - signal pid <br />
signal：57 <br />
signal： <br />
2 中断 <br />
3 退出 <br />
4 非法指令 <br />
5 跟踪中断 <br />
6 Abort <br />
7 EMT指令（Emulation竞争trap） <br />
8 浮点格式的异常情况 <br />
9 kill（不能被捕获或忽略） <br />
10 通道错误 <br />
11不合法的内存区段 <br />
12 错误系统调用 <br />
13 写入不可读的连通管道 <br />
14 alarm clock <br />
15 软件结束信号 <br />
16 用户定义的信号1 <br />
17用户定义的信号2 <br />
18 子进程状态被改变 <br />
19 电源坏掉 <br />
20窗口（Window)的大小被改变 <br />
21Urgent(紧急的） Socket Condition <br />
22 Pollable（可查询的）event <br />
23 停止 <br />
24 由用户终止 <br />
25 继续执行 <br />
26 停止终端输入 <br />
27 停止终端输出 <br />
28 virtual Timer expired <br />
29 Profiling time expired <br />
30 超过CPU时间 <br />
31 超过文件大小限制 <br />
32 Socket I/O possible <br />
<br />
有时即使用kill命令，但进程仍未被删除。最有可能的三种情况： <br />
进程在退出前等待设备完成操作。 <br />
进程在等待由于NFS故障而导致的无法使用的资源。要删除此类进程，输入kill -quit PID <br />
进程为僵死进程，在ps报告的defunct的消息中显示。僵死进程是释放了所有资源，但未接受到父进程确认的进程。只有收到确认才删除进程在进程表中的入口。下一次引导时僵死进程会被清除。僵死进程不影响系统性能，不需要删除。 <br />
<br />
11、优先权控制命 <br />
使用priocntl命令可以： <br />
显示或设置指定进程的调度参 <br />
显示系统调度程序的当前配置信息 <br />
执行带有指定调度参数的命令 <br />
每个进程都有不同的级，每级分配有各自不同的调度策略。 <br />
系统可能配置的级包括： <br />
系统（SYS) <br />
交互(IA) <br />
实时(RT) <br />
分式共享(TS) <br />
对于分式共享级，用户提供的优先权范围为：-20~+20。一个 <br />
分时共享进程的优先权（用户模式优先权）是从父进程继承 <br />
而来。系统在分时调度表中查找用户模式优先权，加入任何 <br />
nice值或这者priocntl优先权值（用户提供），保证创建的全 <br />
局优先权在0~59之间。 <br />
在默认配置中，一个可运行的实时进程在任何其它进程之前运行。实时进程使用不当会导致系统性能急剧下降。 <br />
1. 显示进程级的基本信息（进程级或系统调度参数）: <br />
输入priocntl -l并回车 <br />
2. 显示进程的全局优先级 <br />
使用ps -ecl命令显示进程的全局优先权。全局优先权在PRI栏列出 <br />
3、指定进程的优先级： <br />
输入priocntl -e -c class -m user -limit -p priority command - name回车 <br />
-e 执行命令 <br />
-c 指定级（默认选项是TS（分时共享）或RI（实时） <br />
-m 用户限制选项，指定-p选项提升或降低优先权的最大量。 <br />
-p 允许指定用户提供的优先权，范围为-20~+20。 <br />
<br />
4.更改分时共享进程的调度参数 <br />
依照以下步骤更改分时共享进程的调度参数： <br />
1）成为超级用户。 <br />
2）输入priocntl -s -m user -limit [-p priority] -i id type id -list回车。 <br />
-s允许设置用户优先权范围的上限 <br />
-m 用户限制选项，指定-p选项提升或降低优先权的最大量。 <br />
-p优先权命令名选项，允许指定优先权。 <br />
-I id -type和id -list选项使用id -type和id -list的组合标识进程， id - <br />
type指定id类型，如PID或UID。 <br />
3）输入ps -ecl|grep id -list回车。 <br />
4）检查PRI栏的输出，验证已经成功地更改了进程状态。 <br />
% priocntl -s -c RT -t 500 -p 20 myprog <br />
% ps -ecl|grep myprog <br />
<br />
5. 更改进程 <br />
依照以下步骤更改进程级： <br />
1）成为超级用户。 <br />
2）输入priocntl -s -c class -i id type id -list回车。 <br />
-s允许设置用户优先权范围的上限并更改优先权 <br />
-c 指定想更改的进程级为TS（分时共享）级或RI（实时）级 <br />
-I id -type和id -list选项使用id -type和id -list的组合标识进程， id -type指定id <br />
类型，如PID或UID。 <br />
3）输入ps -ecl|grep id -list回车。 <br />
4）检查PRI栏的输出，验证已经成功地更改了进程状态。 <br />
注意：必须是超级用户或者在实时shell中操作，更改进程级为非实时级或者实时级。 <br />
<br />
6、更改进程优先级 <br />
使用nice命令可以提高或降低一个命令或进程的优先权。 <br />
不带参数使用该命令则默认nice值增4个单位，使进程优先 <br />
权降低。 <br />
注意：必须是超级用户才能。 <br />
/usr/bin/nice command -name(默认，进程的优先权降低4个单位） <br />
/usr/bin/nice +10 command -name（进程的优先权降低10个单位） <br />
/usr/bin/nice -10 command -name（进程的优先权增加10个单位） <br />
/usr/bin/nice - -10 command -name（nice 值减少10个单位，提高一个命令的优先权）</font>
    <img src ="http://www.blogjava.net/envoydada/aggbug/207028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2008-06-11 09:34 <a href="http://www.blogjava.net/envoydada/archive/2008/06/11/207028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Solaris 操作系统的动态跟踪工具Dtrace</title><link>http://www.blogjava.net/envoydada/archive/2007/09/29/149640.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Sat, 29 Sep 2007 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2007/09/29/149640.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/149640.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2007/09/29/149640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/149640.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/149640.html</trackback:ping><description><![CDATA[Solaris&nbsp; DTrace<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DTrace 是一个内置于 Solaris 中的全面的动态跟踪工具。管理员和开发者可以使用该工具，在实时生产系统上检查用户程序及操作系统本身的行为。 DTrace 允许您查看系统，以便了解其工作方式、在软件的多个层之间跟踪性能问题或找出导致异常行为的原因。 <br />
<br />
DTrace动态跟踪指南<br />
http://docs.sun.com/app/docs/doc/819-6959 
 <img src ="http://www.blogjava.net/envoydada/aggbug/149640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2007-09-29 17:36 <a href="http://www.blogjava.net/envoydada/archive/2007/09/29/149640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux自启Tomcat,Solaris自启glassfish</title><link>http://www.blogjava.net/envoydada/archive/2007/08/01/133838.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Wed, 01 Aug 2007 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2007/08/01/133838.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/133838.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2007/08/01/133838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/133838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/133838.html</trackback:ping><description><![CDATA[<p>Linux:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改/etc/rc.local,增加 </p>
<p style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 10px; BORDER-LEFT: #666666 1px solid; COLOR: #ffffff; BORDER-BOTTOM: #666666 1px solid; BACKGROUND-COLOR: #000000">export JAVA_HOME=/usr/java/jdk1.5.0_09<br>/usr/local/src/tomcat5.5.20/bin/startup.sh</p>
<p><br>Solaris:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在目录/etc/rc2.d新增以&#8220;S&#8221;开头的文件，如Sglassfish,编辑文件添加启动命令</p>
<p style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 10px; BORDER-LEFT: #666666 1px solid; COLOR: #ffffff; MARGIN-RIGHT: 5px; BORDER-BOTTOM: #666666 1px solid; BACKGROUND-COLOR: #000000">asadmin start-domain domain1</p>
 <img src ="http://www.blogjava.net/envoydada/aggbug/133838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2007-08-01 17:31 <a href="http://www.blogjava.net/envoydada/archive/2007/08/01/133838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JProfiler远程监控Tomcat</title><link>http://www.blogjava.net/envoydada/archive/2007/07/30/133285.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Mon, 30 Jul 2007 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2007/07/30/133285.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/133285.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2007/07/30/133285.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/133285.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/133285.html</trackback:ping><description><![CDATA[<p><strong><span style="COLOR: red">Windows客户端的JProfiler远程监控Linux上的Tomcat</span><br><br>1.测试环境</strong><br>服务器：RedHat Linux 3.4.3-9.EL4（内核版本 2.6.9-5.EL），Tomcat5.5.20，Sun JDK 1.5.0_09，JProfiler 4.3.2 for linux（安装包：jprofiler_linux_4_3_2.sh） <br>客户端：Windows XP，JProfiler 4.3.2 for windows（安装包：jprofiler_windows_4_3_2.exe） </p>
<p><strong>2.JProfiler软件下载地址 </strong><a href="http://www.ej-technologies.com/"><strong>http://www.ej-technologies.com/</strong></a></p>
<p><strong>3.客户端 JProfiler 安装 略</strong></p>
<p><strong>4.服务器端 JProfiler 安装：</strong> <br>把 jprofiler_linux_4.3.2.sh 上传到到服务器，假设路径为 /opt/jprofiler</p>
<p># cd /opt/jprofiler<br># chmod +x *.sh <br># ./jprofiler_linux_4.3.2.sh -c<br>按照提示来安装，提示都很简单，不在多说。安装路径选择 /opt/jprofiler4</p>
<p>注意，这里的 -c 意思是用字符方式来安装，如果机器上没有 X 则加上该参数.</p>
<p><strong>5.客户端连接配置</strong><br>1). 运行 JProfiler 。第一次打开会有向导，忽略它。 <br>2). 选择 Session-&gt;Integration Wizard-&gt;New Remote Integratation <br>3). 选择 On a remote computer；Platform of remote computer 选择 Linux x86/AMD 64；Next <br>4). 输入服务器 IP ；Next <br>5). 输入服务器上的 jprofiler 的安装路径，如 /opt/jprofiler4 ；next <br>6). 选择服务器的 JDK 环境，这里是：Sun，1.5.0，hotspot；next <br>7). 输入端口：这里是默认值 8849；next <br>8). 选择启动模式：这里选第一种 wait for a connection from the jprofiler GUI；next <br>9). 这里会列出需要在服务器端做的配置:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Integration&nbsp;type:&nbsp;[Generic&nbsp;application]<br>Selected&nbsp;JVM:&nbsp;Sun&nbsp;</span><span style="COLOR: #000000">1.5</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;(hotspot)<br>Startup&nbsp;mode:&nbsp;Wait&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;JProfiler&nbsp;GUI<br><br>(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;Please&nbsp;insert<br><br></span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">agentlib:jprofilerti</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">port</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">8849</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">Xbootclasspath</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">a:</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">opt</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">jprofiler4</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">bin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">agent.jar<br><br>into&nbsp;the&nbsp;start&nbsp;command&nbsp;of&nbsp;your&nbsp;remote&nbsp;application&nbsp;right&nbsp;after&nbsp;the&nbsp;java&nbsp;command.<br><br>(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)&nbsp;Please&nbsp;add<br><br></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">opt</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">jprofiler4</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">bin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">linux</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x86<br><br>to&nbsp;the&nbsp;environment&nbsp;variable&nbsp;LD_LIBRARY_PATH.<br><br>A&nbsp;remote&nbsp;session&nbsp;named&nbsp;Remote&nbsp;application&nbsp;on&nbsp;</span><span style="COLOR: #000000">192.168</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">40.15</span><span style="COLOR: #000000">&nbsp;will&nbsp;be&nbsp;created&nbsp;that&nbsp;connects&nbsp;to&nbsp;a&nbsp;running&nbsp;instance&nbsp;of&nbsp;the&nbsp;remote&nbsp;application&nbsp;that&nbsp;is&nbsp;started&nbsp;with&nbsp;the&nbsp;modified&nbsp;start&nbsp;command.<br></span></div>
<p><strong><br>6.服务器端的配置<br></strong>(1)修改系统环境配置文件 /etc/profile ,增加</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">JPROFILER_HOME</span><span style="COLOR: #000000">=/</span><span style="COLOR: #000000">opt</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">jprofiler4</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">bin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">linux</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x86<br>export&nbsp;LD_LIBRARY_PATH</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">$LD_LIBRARY_PATH:$JPROFILER_HOME</span></div>
<p><br>(2)修改TOMCAT启动文件catalina.sh，添加-agentlib:jprofilerti=port=8849&nbsp; -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 内容到CATALINA_OPTS中；<br>&#8220;-agentlib:jprofilerti=port=8849&nbsp; -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar &#8221; 此内容由客户端软件生成</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">CATALINA_OPTS</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">$CATALINA_OPTS&nbsp;-Xms128m&nbsp;-Xmx128m&nbsp;$JPDA_OPTS&nbsp;-agentlib:jprofilerti=port=8849&nbsp;&nbsp;-Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar</span><span style="COLOR: #000000">"</span></div>
<p><br>7.Reboot Linux and startup Tomcat using startup.sh;<br>&nbsp;&nbsp; The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Protocol&nbsp;version&nbsp;</span><span style="COLOR: #000000">23</span><span style="COLOR: #000000"><br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Using&nbsp;JVMTI<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">bit&nbsp;library<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Listening&nbsp;on&nbsp;port:&nbsp;</span><span style="COLOR: #000000">8849</span><span style="COLOR: #000000">.<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Native&nbsp;library&nbsp;initialized<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Waiting&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;a&nbsp;connection&nbsp;from&nbsp;the&nbsp;&nbsp;JProfiler&nbsp;GUI&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"></span></div>
<p>&nbsp;</p>
<p><strong>8.启动客户端软件<br></strong>&nbsp;&nbsp; 点击jprofiler菜单 session&gt;start center&gt;Open Session<br>&nbsp;&nbsp; Available session configurations中列出了刚才配置的连接，选中使用就OK了！！</p>
<p>9.The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Using&nbsp;dynamic&nbsp;instrumentation<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Time&nbsp;measurement:&nbsp;elapsed&nbsp;time<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;CPU&nbsp;profiling&nbsp;enabled<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Hotspot&nbsp;compiler&nbsp;enabled<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Starting&nbsp;org</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">apache</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">catalina</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">startup</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Bootstrap&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"></span></div>
<p>&nbsp;</p>
<p>10.当中断JProfiler连接时<br>&nbsp;&nbsp; The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Disconnected.&nbsp;Waiting&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;reconnection.<br>&nbsp;JProfiler</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Listening&nbsp;on&nbsp;port:&nbsp;</span><span style="COLOR: #000000">8849</span><span style="COLOR: #000000">.</span></div>
 <img src ="http://www.blogjava.net/envoydada/aggbug/133285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2007-07-30 11:53 <a href="http://www.blogjava.net/envoydada/archive/2007/07/30/133285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Glassfish的安装</title><link>http://www.blogjava.net/envoydada/archive/2007/07/24/132080.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Tue, 24 Jul 2007 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2007/07/24/132080.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/132080.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2007/07/24/132080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/132080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/132080.html</trackback:ping><description><![CDATA[<h4><span style="color: red">Instructions to unbundle and configure GlassFish</span> </h4>
<p>To install and configure GlassFish you need to have JDK 5 installed on your system. The configuration processing depends on Ant (1.6.5).&nbsp; The bundle includes an Ant distribution that has been extended with tasks to facilitate developing Java EE 5 applications for the application server. </p>
<ol>
    <li>
    <div style="border-right: #666666 1px solid; border-top: #666666 1px solid; border-left: #666666 1px solid; border-bottom: #666666 1px solid">
    <ol>
        <li>Download one of the bundles to disk, set JAVA_HOME to JDK 5.<br />
        <li>Run:
        <pre>% java -Xmx256m -jar <em>filename.jar</em></pre>
        This command will unbundle GlassFish and create a new directory structure rooted under a directory named 'glassfish'.
        <li>
        <pre>% cd glassfish</pre>
        <li>If you are using a machine with an operating system that is a derivative of UNIX(tm), set the execute permission for the Ant binaries that are included with the GlassFish bundle.
        <pre>% chmod -R +x lib/ant/bin</pre>
        <pre>% lib/ant/bin/ant -f setup.xml </pre>
        OR for Windows:<br />
        <pre>% lib\ant\bin\ant -f setup.xml </pre>
        </li>
    </ol>
    </div>
    </li>
</ol>
<p>For GlassFish V2 with Clustering supported installation, just change step 4 from the above installation</p>
<pre style="margin-left: 40px">
<div style="border-right: #666666 1px solid; border-top: #666666 1px solid; border-left: #666666 1px solid; border-bottom: #666666 1px solid">
<pre style="margin-left: 40px">% lib/ant/bin/ant -f setup-cluster.xml </pre>
</div>
OR&nbsp; for Windows: <br />
</pre>
<pre style="margin-left: 40px">
<div style="border-right: #666666 1px solid; border-top: #666666 1px solid; border-left: #666666 1px solid; border-bottom: #666666 1px solid">
<pre style="margin-left: 40px">% lib\ant\bin\ant -f setup-cluster.xml </pre>
</div>
</pre>
<p>To get started with GlassFish, see the <a href="https://glassfish.dev.java.net/downloads/quickstart/index.html"><u><font color="#800080">quick start guide</font></u></a>.<br />
</p>
<p><glassfish_install_dir>See </glassfish_install_dir><a href="https://glassfish.dev.java.net/javaee5/build/GlassFish_LB_Cluster.html"><u><font color="#0000ff">Configuring the Cluster/Load Balancer with GlassFish V2</font></u></a> for how to do the load balancing after creating Clusters on GlassFish V2.<a href="https://glassfish.dev.java.net/javaee5/build/GlassFish_LB_Cluster.html"></a></p>
<h4><span style="color: red">Instructions to schedule and configure the auto-update feature</span></h4>
<p>These steps assume that you have already unbundled and configured GlassFish.
<p>
<ol>
    <li>Change directory to where you have installed GlassFish.
    <li>Go to the updatecenter/bin subdirectory.
    <li>Run the updatecenter client script:
    <pre>
    <div style="border-right: #666666 1px solid; border-top: #666666 1px solid; border-left: #666666 1px solid; border-bottom: #666666 1px solid">% ./updatetool </div>
    </pre>
    <li>The GlassFish Update Center dialog window will be displayed at this time. Click on the "Preferences" tab.
    <li>To disable auto-update, set the "Update Schedule: Check for Updates" to "Never (Manual)".
    <li>You can also schedule updates by setting the desired date and time. </li>
</ol>
<p>For more information on data collection done by the auto-update feature, please visit the <a href="http://wiki.glassfish.java.net/Wiki.jsp?page=UsageMetrics"><u><font color="#0000ff">GlassFish Usage Metrics</font></u></a> page.</p>
<h3>Binary builds</h3>
<p>The Open Sourcing Clustering features are included in this promotion.</p>
<p><strong>Solaris SPARC Platform</strong> </p>
<ul>
    <li><a href="http://www.java.net/download/javaee5/v2_branch/promoted/SunOS/glassfish-installer-v2-b50g.jar"><u><font color="#0000ff">glassfish-installer-v2-b50g.jar</font></u></a>, size 70M </li>
</ul>
<p><strong>Solaris x86 Platform</strong></p>
<ul>
    <li><a href="http://java.net/download/javaee5/v2_branch/promoted/SunOS_X86/glassfish-installer-v2-b50g.jar"><u><font color="#0000ff">glassfish-installer-v2-b50g-sunos_x86.jar</font></u></a> size 67M </li>
</ul>
<p><strong>Windows Platform</strong></p>
<ul>
    <li><a href="http://java.net/download/javaee5/v2_branch/promoted/WINNT/glassfish-installer-v2-b50g.jar"><u><font color="#0000ff">glassfish-installer-v2-b50g-windows.jar</font></u></a> size 63M </li>
</ul>
<p><strong>Linux Platform</strong></p>
<ul>
    <li><a href="http://java.net/download/javaee5/v2_branch/promoted/Linux/glassfish-installer-v2-b50g.jar"><u><font color="#0000ff">glassfish-installer-v2-b50g-linux.jar</font></u></a> size 64M </li>
</ul>
<p><strong>MacOS Platform</strong></p>
<ul>
    <li><a href="http://java.net/download/javaee5/v2_branch/promoted/Darwin/glassfish-installer-v2-b50g.jar"><u><font color="#0000ff">glassfish-installer-v2-b50g-darwin.jar</font></u></a> size 67M </li>
</ul>
<h3>Source bundle</h3>
<p>Source code for GlassFish is available in the bundle below. Some technologies are developed in other projects and only a binary version is available in the GlassFish project source tree. To find more information on where to find sources see this <a href="https://glassfish.dev.java.net/public/ServerModules.html"><u><font color="#0000ff">page</font></u></a>.<br />
</p>
<ul>
    <li><a href="http://download.java.net/javaee5/v2_branch/promoted/source/glassfish-v2-b50g-src.zip"><u><font color="#0000ff">b50g source bundle</font></u></a><br />
    </li>
</ul>
<img src ="http://www.blogjava.net/envoydada/aggbug/132080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2007-07-24 16:32 <a href="http://www.blogjava.net/envoydada/archive/2007/07/24/132080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>启动Solaris10-webmin</title><link>http://www.blogjava.net/envoydada/archive/2007/07/10/129316.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Tue, 10 Jul 2007 04:50:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2007/07/10/129316.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/129316.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2007/07/10/129316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/129316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/129316.html</trackback:ping><description><![CDATA[Many of you may not realize this, but webmin is built in to Solaris 10 (under /usr/sfw). <br>To get it up and running, run the following as root:<br>
<div style="WIDTH: 516px; COLOR: #ffffff; HEIGHT: 51px; BACKGROUND-COLOR: black"># /usr/sfw/lib/webmin/setup.sh<br># svcadm enable webmin</div>
 <img src ="http://www.blogjava.net/envoydada/aggbug/129316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2007-07-10 12:50 <a href="http://www.blogjava.net/envoydada/archive/2007/07/10/129316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 系统的配置文件</title><link>http://www.blogjava.net/envoydada/archive/2006/12/07/86074.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Thu, 07 Dec 2006 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2006/12/07/86074.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/86074.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2006/12/07/86074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/86074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/86074.html</trackback:ping><description><![CDATA[<blockquote><font size=2>本 文说明了 Linux 系统的配置文件，在多用户、多任务环境中，配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配 额、管理电子邮件和新闻组，以及配置内核参数。本文还根据配置文件的使用和其所影响的服务的情况对目前 Red Hat Linux 系统中的配置文件进行了分类。 </font></blockquote>
<p><a name=1><span class=atitle><font size=2>介绍 </font></span></a></p>
<p><font size=2>每个 Linux 程序都是一个可执行文件，它含有操作码列表，CPU 将执行这些操作码来完成特定的操作。例如，ls 命令是由 /bin/ls 文件提供的，该文件含有机器指令的列表，在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。 几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。 </font></p>
<p><a name=N10045><span class=smalltitle><font size=2>Linux 中有没有一个标准的配置文件格式？ </font></span></a></p>
<p><font size=2>一句话，没有。不熟悉 Linux 的用户（一定）会感到沮丧，因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中，每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多，从 /etc/shells 文件（它包含被一个换行符分开的 shell 的列表），到 Apache 的复杂的 /etc/httpd.conf 文件。 </font></p>
<p><a name=N1004E><span class=smalltitle><font size=2>什么是系统配置文件？ </font></span></a></p>
<p><font size=2>内核本身也可以看成是一个&#8220;程序&#8221;。为什么内核需要配置文件？内核需要了解系统中用户和组的列表，进而管理文件权限（即根据权限判定特定用户 （UNIX_USERS）是否可以打开某个文件）。注意，这些文件不是明确地由程序读取的，而是由系统库所提供的一个函数读取，并被内核使用。例如，程序 需要某个用户的（加密过的）密码时不应该打开 /etc/passwd 文件。相反，程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核（通过系统库）决定的。 </font></p>
<p><font size=2>除非另行指定，Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类： </font></p>
<p><font size=2><br></font></p>
<br><br>
<p><a name=2><span class=atitle><font size=2>访问文件 </font></span></a></p>
<p><font size=2></font></p>
<p><font size=2></font></p>
<table style="WIDTH: 685px; HEIGHT: 129px" cellSpacing=0 width=685 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/host.conf</em> </font></strong></td>
            <td><font size=2>告诉网络域名服务器如何查找主机名。（通常是 /etc/hosts，然后就是名称服务器；可通过 netconf 对其进行更改） </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/hosts</em> </font></strong></td>
            <td><font size=2>包含（本地网络中）已知主机的一个列表。如果系统的 IP 不是动态生成，就可以使用它。对于简单的主机名解析（点分表示法），在请求 DNS 或 NIS 网络名称服务器之前，/etc/hosts.conf 通常会告诉解析程序先查看这里。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/hosts.allow</em> </font></strong></td>
            <td><font size=2>请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/hosts.deny</em> </font></strong></td>
            <td><font size=2>请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=3><span class=atitle><font size=2>引导和登录／注销 </font></span></a></p>
<p><font size=2></font></p>
<p><font size=2></font></p>
<table style="WIDTH: 698px; HEIGHT: 215px" cellSpacing=0 width=698 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/issue &amp; /etc/issue.net</em> </font></strong></td>
            <td><font size=2>这些文件由 mingetty（和类似的程序）读取，用来向从终端（issue）或通过 telnet 会话（issue.net）连接的用户显示一个&#8220;welcome&#8221;字符串。 它们包括几行声明 Red Hat 版本号、名称和内核 ID 的信息。它们由 rc.local 使用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/redhat-release</em> </font></strong></td>
            <td><font size=2>包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/rc.d/rc</em> </font></strong></td>
            <td><font size=2>通常在所有运行级别运行，级别作为参数传送。 例如，要以图形（Graphics）模式（X-Server）引导机器，请在命令行运行下面的命令： <code><font face=新宋体>init 5</font></code> 。运行级别 5 表示以图形模式引导系统。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/rc.d/rc.local</em> </font></strong></td>
            <td><font size=2>非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/rc.d/rc.sysinit</em> </font></strong></td>
            <td><font size=2>通常是所有运行级别的第一个脚本。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/rc.d/rc/rcX.d</em> </font></strong></td>
            <td><font size=2>从 rc 运行的脚本（ <strong>X</strong> 表示 1 到 5 之间的任意数字）。这些目录是特定&#8220;运行级别&#8221;的目录。 当系统启动时，它会识别要启动的运行级别，然后调用该运行级别的特定目录中存在的所有启动脚本。例如，系统启动时通常会在引导消息之后显示&#8220;entering run-level 3&#8221;的消息；这意味着 /etc/rc.d/rc3.d/ 目录中的所有初始化脚本都将被调用。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=4><span class=atitle><font size=2>文件系统 </font></span></a></p>
<p><font size=2>内核提供了一个接口，用来显示一些它的数据结构，这些数据结构对于决定诸如使用的中断、初始化的设备和内存统计信息之类的系统参数可能很有用。这个接口是作为一个独立但虚拟的文件系统提供的，称为 /proc 文件系统。很多系统实用程序都使用这个文件系统中存在的值来显示系统统计信息。例如，/proc/modules 文件列举系统中当前加载的模块。lsmod 命令读取此信息，然后将其以人们可以看懂的格式显示出来。 下面表格中指定的 mtab 文件以同样的方式读取包含当前安装的文件系统的 /proc/mount 文件。 </font></p>
<p><font size=2></font></p>
<table style="WIDTH: 663px; HEIGHT: 78px" cellSpacing=0 width=663 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/mtab</em> </font></strong></td>
            <td><font size=2>这将随着 /proc/mount 文件的改变而不断改变。换句话说，文件系统被安装和卸载时，改变会立即反映到此文件中。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/fstab</em> </font></strong></td>
            <td><font size=2>列举计算机当前&#8220;可以安装&#8221;的文件系统。 这非常重要，因为计算机引导时将运行 <code><font face=新宋体>mount -a</font></code> 命令，该命令负责安装 fstab 的倒数第二列中带有&#8220;1&#8221;标记的每一个文件系统。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/mtools.conf</em> </font></strong></td>
            <td><font size=2>DOS 类型的文件系统上所有操作（创建目录、复制、格式化等等）的配置。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=5><span class=atitle><font size=2>系统管理 </font></span></a></p>
<p><font size=2></font></p>
<p><font size=2></font></p>
<table style="WIDTH: 655px; HEIGHT: 400px" cellSpacing=0 width=655 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/group</em> </font></strong></td>
            <td><font size=2>包含有效的组名称和指定组中包括的用户。单一用户如果执行多个任务，可以存在于多个组中。例如，如果一个&#8220;用户&#8221;是&#8220;project 1&#8221;工程组的成员，同时也是管理员，那么在 group 文件中他的条目看起来就会是这样的： <code><font face=新宋体>user: * : group-id : project1</font></code></font> </td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/nologin</em> </font></strong></td>
            <td><font size=2>如果有 /etc/nologin 文件存在，login(1) 将只允许 root 用户进行访问。它将对其它用户显示此文件的内容并拒绝其登录。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>etc/passwd</em> </font></strong></td>
            <td><font size=2>请参阅&#8220;man passwd&#8221;。它包含一些用户帐号信息，包括密码（如果未被 shadow 程序加密过）。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/rpmrc</em> </font></strong></td>
            <td><font size=2>rpm 命令配置。所有的 rpm 命令行选项都可以在这个文件中一起设置，这样，当任何 rpm 命令在该系统中运行时，所有的选项都会全局适用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/securetty</em> </font></strong></td>
            <td><font size=2>包含设备名称，由 tty 行组成（每行一个名称，不包括前面的 /dev/），root 用户在这里被允许登录。 </font></td>
        </tr>
        <tr>
            <td><font size=2><strong><em>/etc/usertty</em> </strong><br><strong><em>/etc/shadow</em> </strong></font></td>
            <td><font size=2>包含加密后的用户帐号密码信息，还可以包括密码时效信息。包括的字段有： </font>
            <ul>
                <li><font size=2>登录名 </font>
                <li><font size=2>加密后的密码 </font>
                <li><font size=2>从 1970 年 1 月 1 日到密码最后一次被更改的天数 </font>
                <li><font size=2>距密码可以更改之前的天数 </font>
                <li><font size=2>距密码必须更改之前的天数 </font>
                <li><font size=2>密码到期前用户被警告的天数 </font>
                <li><font size=2>密码到期后帐户被禁用的天数 </font>
                <li><font size=2>从 1970 年 1 月 1 日到帐号被禁用的天数 </font></li>
            </ul>
            </td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/shells</em> </font></strong></td>
            <td><font size=2>包含系统可用的可能的&#8220;shell&#8221;的列表。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/motd</em> </font></strong></td>
            <td><font size=2>每日消息；在管理员希望向 Linux 服务器的所有用户传达某个消息时使用。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=6><span class=atitle><font size=2>联网 </font></span></a></p>
<p><font size=2></font></p>
<p><font size=2></font></p>
<table style="WIDTH: 661px; HEIGHT: 340px" cellSpacing=0 width=661 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/gated.conf</em> </font></strong></td>
            <td><font size=2>gated 的配置。只能被 gated 守护进程所使用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/gated.version</em> </font></strong></td>
            <td><font size=2>包含 gated 守护进程的版本号。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/gateway</em> </font></strong></td>
            <td><font size=2>由 routed 守护进程可选地使用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/networks</em> </font></strong></td>
            <td><font size=2>列举从机器所连接的网络可以访问的网络名和网络地址。通过路由命令使用。允许使用网络名称。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/protocols</em> </font></strong></td>
            <td><font size=2>列举当前可用的协议。请参阅 NAG（网络管理员指南，Network Administrators Guide）和联机帮助页。 C 接口是 getprotoent。绝不能更改。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/resolv.conf</em> </font></strong></td>
            <td><font size=2>在程序请求&#8220;解析&#8221;一个 IP 地址时告诉内核应该查询哪个名称服务器。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/rpc</em> </font></strong></td>
            <td><font size=2>包含 RPC 指令／规则，这些指令／规则可以在 NFS 调用、远程文件系统安装等中使用。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/exports</em> </font></strong></td>
            <td><font size=2>要导出的文件系统（NFS）和对它的权限。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/services</em> </font></strong></td>
            <td><font size=2>将网络服务名转换为端口号／协议。由 inetd、telnet、tcpdump 和一些其它程序读取。有一些 C 访问例程。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/inetd.conf</em> </font></strong></td>
            <td><font size=2>inetd 的配置文件。请参阅 inetd 联机帮助页。 包含每个网络服务的条目，inetd 必须为这些网络服务控制守护进程或其它服务。注意，服务将会运行，但在 /etc/services 中将它们注释掉了，这样即使这些服务在运行也将不可用。 格式为：<service_name></service_name><sock_type></sock_type>
            <proto></proto>
            <flags></flags><user></user><server_path></server_path><args></args></font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/sendmail.cf</em> </font></strong></td>
            <td><font size=2>邮件程序 sendmail 的配置文件。比较隐晦，很难理解。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/sysconfig/network</em> </font></strong></td>
            <td><font size=2>指出 NETWORKING=yes 或 no。至少由 rc.sysinit 读取。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/sysconfig/network-scripts/if*</em> </font></strong></td>
            <td><font size=2>Red Hat 网络配置脚本。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=7><span class=atitle><font size=2>系统命令 </font></span></a></p>
<p><font size=2>系统命令要独占地控制系统，并让一切正常工作。所有如 login（完成控制台用户身份验证阶段）或 bash（提供用户和计算机之间交互）之类的程序都是系统命令。因此，和它们有关的文件也特别重要。这一类别中有下列令用户和管理员感兴趣的文件。 </font></p>
<p><font size=2></font></p>
<table style="WIDTH: 678px; HEIGHT: 185px" cellSpacing=0 width=678 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/lilo.conf</em> </font></strong></td>
            <td><font size=2>包含系统的缺省引导命令行参数，还有启动时使用的不同映象。您在 LILO 引导提示的时候按 Tab 键就可以看到这个列表。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/logrotate.conf</em> </font></strong></td>
            <td><font size=2>维护 /var/log 目录中的日志文件。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/identd.conf</em> </font></strong></td>
            <td><font size=2>identd 是一个服务器，它按照 RFC 1413 文档中指定的方式实现 TCP/IP 提议的标准 IDENT 用户身份识别协议。identd 的操作原理是查找特定 TCP/IP 连接并返回拥有此连接的进程的用户名。作为选择，它也可以返回其它信息，而不是用户名。请参阅 identd 联机帮助页。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/ld.so.conf</em> </font></strong></td>
            <td><font size=2>&#8220;动态链接程序&#8221;（Dynamic Linker）的配置。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/inittab</em> </font></strong></td>
            <td><font size=2>按年代来讲，这是 UNIX 中第一个配置文件。在一台 UNIX 机器打开之后启动的第一个程序是 init，它知道该启动什么，这是由于 inittab 的存在。在运行级别改变时，init 读取 inittab，然后控制主进程的启动。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/termcap</em> </font></strong></td>
            <td><font size=2>一个数据库，包含所有可能的终端类型以及这些终端的性能。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=8><span class=atitle><font size=2>守护进程 </font></span></a></p>
<p><font size=2>守护进程是一种运行在非交互模式下的程序。一般来说，守护进程任务是和联网区域有关的：它们等待连接，以便通过连接提供服务。Linux 可以使用从 Web 服务器到 ftp 服务器的很多守护进程。 </font></p>
<p><font size=2></font></p>
<table style="WIDTH: 677px; HEIGHT: 124px" cellSpacing=0 width=677 border=1>
    <tbody>
        <tr>
            <td><strong><font size=2><em>/etc/syslogd.conf</em> </font></strong></td>
            <td><font size=2>syslogd 守护进程的配置文件。syslogd 是一种守护进程，它负责记录（写到磁盘）从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用，这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/httpd.conf</em> </font></strong></td>
            <td><font size=2>Web 服务器 Apache 的配置文件。这个文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中，但是要确定它的位置，您还需要检查特定的 Apache 安装信息。 </font></td>
        </tr>
        <tr>
            <td><strong><font size=2><em>/etc/conf.modules or /etc/modules.conf</em> </font></strong></td>
            <td><font size=2>kerneld 的配置文件。有意思的是，kerneld 并不是&#8220;作为守护进程的&#8221;内核。它其实是一种在需要时负责&#8220;快速&#8221;加载附加内核模块的守护进程。 </font></td>
        </tr>
    </tbody>
</table>
<br><br><br>
<p><a name=9><span class=atitle><font size=2>用户程序 </font></span></a></p>
<p><font size=2>在 Linux（和一般的 UNIX）中，有无数的&#8220;用户&#8221;程序。最常见的一种用户程序配置文件是 /etc/lynx.cfg。这是著名的文本浏览器 lynx 的配置文件。通过这个文件，您可以定义代理服务器、要使用的字符集等等。 下面的代码样本展示了 lynx.cfg 文件的一部分，修改这部分代码可以改变 Linux 系统的代理服务器设置。缺省情况下，这些设置适用于在各自的 shell 中运行 lynx 的所有用户，除非某个用户通过指定 <code><font face=新宋体>--cfg = "mylynx.cfg"</font></code> 重设了缺省的配置文件。 </font></p>
<p><br><a name=N10383><strong><font size=2>/etc/lynx.cfg 中的代理服务器设置 </font></strong></a><br></p>
<table style="WIDTH: 661px; HEIGHT: 592px" cellSpacing=0 cellPadding=5 width=661 bgColor=#eeeeee border=1>
    <tbody>
        <tr>
            <td>
            <pre><code class=section>
            <font size=2>.h1 proxy<br>.h2 HTTP_PROXY<br>.h2 HTTPS_PROXY<br>.h2 FTP_PROXY<br>.h2 GOPHER_PROXY<br>.h2 NEWS_PROXY<br>.h2 NNTP_PROXY<br># Lynx version 2.2 and beyond supports the use of proxy servers that can act as<br># firewall gateways and caching servers. They are preferable to the older<br># gateway servers. Each protocol used by Lynx can be mapped separately using<br># PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have<br># not set them externally, you can set them at run time via this configuration file.<br># They will not override external settings. The no_proxy variable can be used<br># to inhibit proxying to selected regions of the Web (see below). Note that on<br># VMS these proxy variables are set as process logicals rather than symbols, to<br># preserve lowercasing, and will outlive the Lynx image.<br>#<br>.ex 15<br>http_proxy:http://proxy3.in.ibm.com:80/<br>ftp_proxy:http://proxy3.in.ibm.com:80/<br>#http_proxy:http://penguin.in.ibm.com:8080<br>#ftp_proxy:http://penguin.in.ibm.com:8080/<br><br>.h2 NO_PROXY<br># The no_proxy variable can be a comma-separated list of strings defining<br># no-proxy zones in the DNS domain name space.  If a tail substring of the<br># domain-path for a host matches one of these strings, transactions with that<br># node will not be proxied.<br>.ex<br>no_proxy:demiurge.in.ibm.com, demiurge
            </font>
            </code>
            <font size=2>
            </font>
            </pre>
            </td>
        </tr>
    </tbody>
</table>
 <img src ="http://www.blogjava.net/envoydada/aggbug/86074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2006-12-07 13:21 <a href="http://www.blogjava.net/envoydada/archive/2006/12/07/86074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下配置cvs服务器</title><link>http://www.blogjava.net/envoydada/archive/2006/11/16/81586.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Thu, 16 Nov 2006 10:42:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2006/11/16/81586.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/81586.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2006/11/16/81586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/81586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/81586.html</trackback:ping><description><![CDATA[		<p>一 CVS<a href="http://www.chinahtml.com/systems/" target="_blank">服务器</a>的安装： <br />1。查看你的操作系统上是否安装了CVS：<br />#&gt; rpm -qa|grep cvs </p>
		<p>如果没有安装你可以在Redhat 第2张光盘上找到<br /><br />2。建立cvs用户组： </p>
		<p>#&gt; groupadd cvs </p>
		<p>3。建立cvs组的cvsroot用户和所属的目录： </p>
		<p>#&gt; useradd -g cvs -G cvs &#8211;d /cvsroot cvsroot </p>
		<p>4。为cvsroot用户添加密码： </p>
		<p>#&gt; passwd cvsroot </p>
		<p>5。改变 /cvsroot/ 的目录属性：</p>
		<p>#&gt; chmod &#8211;R 770 /cvsroot </p>
		<p>6。改变用户登陆身份： </p>
		<p>#&gt; su cvsroot </p>
		<p>7。开始创建单个项目： </p>
		<p>#&gt; cd /cvsroot <br />#&gt; mkdir project1 <br />#&gt;mkdir project2 <br />8。开始建立仓库： </p>
		<p>#&gt; cvs &#8211;d /cvsroot/project1 init <br />#&gt; cvs &#8211;d /cvsroot/project2 init <br />#&gt; chmod &#8211;R 770 ./project1/ ./project2/ </p>
		<p>9。建立CVS服务启动文件，我们使用xinetd方式： </p>
		<p>#&gt; [Crtl]+[d] 切换到root用户身份 <br />#&gt; cd /etc/xinetd.d <br />#&gt; vi cvspserver </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">service&#160;cvspserver&#160;<br />{&#160;<br />disable&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;no&#160;<br />flags&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;REUSE&#160;<br />socket_type&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;stream&#160;<br />wait&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;no&#160;<br />user&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;root&#160;<br />server</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">usr</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">bin</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">cvs&#160;<br />server_args</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">f&#160;</span>
				<span style="COLOR: #000000">--</span>
				<span style="COLOR: #000000">allow</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">root</span>
				<span style="COLOR: #000000">=/</span>
				<span style="COLOR: #000000">home2</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">cvsroot</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">project1&#160;</span>
				<span style="COLOR: #000000">--</span>
				<span style="COLOR: #000000">allow</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">root</span>
				<span style="COLOR: #000000">=/</span>
				<span style="COLOR: #000000">home2</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">cvsroot</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">project2&#160;pserver&#160;<br />log_on_failure&#160;</span>
				<span style="COLOR: #000000">+=</span>
				<span style="COLOR: #000000">&#160;USERID&#160;<br />}</span>
		</div>
		<p>注：由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做：</p>
		<p>#&gt; vi cvspserver </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">service&#160;cvspserver&#160;<br />{&#160;<br />disable&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;no&#160;<br />flags&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;REUSE&#160;<br />socket_type&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;stream&#160;<br />wait&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;no&#160;<br />user&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;root&#160;<br />server&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">cvsroot</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">cvs.run&#160;<br />log_on_failure&#160;</span>
				<span style="COLOR: #000000">+=</span>
				<span style="COLOR: #000000">&#160;USERID&#160;<br />}<br /><br /></span>
		</div>
		<p>
		</p>
		<p>编写cvs.run脚本 </p>
		<p>#&gt; vi /cvsroot/cvs.run </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">#</span>
				<span style="COLOR: #000000">!/</span>
				<span style="COLOR: #000000">bin</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">bash&#160;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">usr</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">bin</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">cvs&#160;</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">f&#160;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">--</span>
				<span style="COLOR: #000000">allow</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">root</span>
				<span style="COLOR: #000000">=/</span>
				<span style="COLOR: #000000">cvsroot</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">project1&#160;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">--</span>
				<span style="COLOR: #000000">allow</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">root</span>
				<span style="COLOR: #000000">=/</span>
				<span style="COLOR: #000000">cvsroot</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">project2&#160;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />pserver</span>
		</div>
		<p>#&gt;chmod +x /cvsroot/cvs.run </p>
		<p>10。加入cvs服务： </p>
		<p>#&gt;vi /etc/services </p>
		<p>cvspserver 2401/tcp #pserver cvs service <br />cvspserver 2401/udp #pserver cvs service <br />11。启动cvs服务： </p>
		<p>#&gt; /etc/init.d/xinetd restart </p>
		<p>12。检查cvspserver服务是否已经启动： </p>
		<p>#&gt; netstat -l |grep cvspserver <br />应该有如下结果： </p>
		<p>tcp 0 0 *:cvspserver *:* LISTEN </p>
		<p>二。CVS服务的用户管理： </p>
		<p>上面我们已经建立了project1和project2两个CVS仓库，下面我们分别给两个仓库建立cvs用户。 </p>
		<p>13。创建可以登陆cvs<a href="http://www.chinahtml.com/systems/" target="_blank">服务器</a>的用户名和密码： </p>
		<p>#&gt; su cvsroot <br />#&gt; vi /cvsroot/project1/CVSROOT/passwd </p>
		<p>trotter:*****:cvsroot <br />mimi:*****:cvsroot </p>
		<p>#&gt;vi /cvsroot/project2/CVSROOT/passwd </p>
		<p>trotter:*****:cvsroot <br />gary:*****:cvsroot </p>
		<p>这两个文件的意思是有trotter，mimi，gary三个cvs用户，mimi拥有project1的使用权限，gary拥有project2的使用权限，trotter拥有project1和project2的使用权限。登陆后的权限是cvsroot权限。<br />注意：这里的cvs用户和系统用户是不同的。 </p>
		<p>14。*****为密码，由以下文件生成： </p>
		<p>#&gt; vi /cvsroot/passwd.pl </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">#</span>
				<span style="COLOR: #000000">!/</span>
				<span style="COLOR: #000000">usr</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">bin</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">perl&#160;<br />srand&#160;(time());&#160;<br />my&#160;$randletter&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">(int&#160;(rand&#160;(26))&#160;+&#160;(int&#160;(rand&#160;(1)&#160;+&#160;.5)&#160;%&#160;2&#160;?&#160;65&#160;:&#160;97))</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;&#160;<br />my&#160;$salt&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;sprintf&#160;(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%c%c</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,&#160;eval&#160;$randletter,&#160;eval&#160;$randletter);&#160;<br />my&#160;$plaintext&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;shift;&#160;<br />my&#160;$crypttext&#160;</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">&#160;crypt&#160;($plaintext,&#160;$salt);&#160;<br />print&#160;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${crypttext}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;</span>
		</div>
		<p>#&gt;chmod a+x /cvsroot/passwd.pl </p>
		<p>15。如果你想生成一个密码是&#8220;123456&#8221;，则： </p>
		<p>#&gt; /cvsroot/passwd.pl &#8220;123456&#8221; </p>
		<p>回车即可得到加密密码,用其替换passwd文件中的***** </p>
		<p>16。Ok，cvs现在已经全部安装完成了，如果你想让一个用户拥有project1的权限，你就在/cvsroot/project1/CVSROOT/passwd中给他加入一个用户；如果你想让一个用户同时具有project1和project2的权限，你就给/cvsroot/project1/CVSROOT/passwd和/cvsroot/project2/CVSROOT/passwd里给他加一个用户名和密码相同的用户即可。最后，我们试用一下：</p>
		<p>#&gt; cvs -d :pserver:trotter@192.168.1.200:/cvsroot/project1 login </p>
		<p>敲入命令回车后提示输入trotter的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了</p>
 <img src ="http://www.blogjava.net/envoydada/aggbug/81586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2006-11-16 18:42 <a href="http://www.blogjava.net/envoydada/archive/2006/11/16/81586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache + Tomcat*2集群 负载平衡(Linux环境)</title><link>http://www.blogjava.net/envoydada/archive/2006/11/15/81196.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Wed, 15 Nov 2006 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2006/11/15/81196.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/81196.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2006/11/15/81196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/81196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/81196.html</trackback:ping><description><![CDATA[<p>Apache + Tomcat*2集群 负载平衡（Linux环境）</p>
<p>说明：一台apache主机，两台tomcat主机</p>
<p>安装JDK、安装Apache、安装Tomcat、配置Apache代理、配置Tomcat集群</p>
<p>一、安装JDK（所有运行Tomcat主机，即web服务器）<br>&nbsp; 1.下载JDK的bin包，如jdk-1_5_0_02-linux-i586.rpm.bin ，给其添加执行权限，执行#./jdk-1_5_0_02-linux-i586.rpm.bin , 在</p>
<p>当前目录生成rpm安装包，同样给其添加执行权限。 再执行 #rpm -ivh jdk-1_5_0_02-linux-i586.rpm 出现安装协议 按&lt;Enter&gt;接受</p>
<p>即可。<br>&nbsp; 2.设置环境变量 <font color=#ff0000>#vi /etc/profile</font>&nbsp; 在其最后加入</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JAVA_HOME</span> <span style="COLOR: #000000">=/</span> <span style="COLOR: #000000">usr</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">java</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">jdk1.</span> <span style="COLOR: #000000">5</span> <span style="COLOR: #000000">.0_02<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLASSPATH</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">.:$JAVA_HOME</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">lib:$JAVA_HOME</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">jre</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">lib<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PATH</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">$PATH:$JAVA_HOME</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">bin:$JAVA_HOME</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">jre</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">bin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;JAVA_HOME&nbsp;CLASSPATH&nbsp;PATH<br></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 保存退出<br><br>&nbsp; 3.要使JDK在所有的用户中使用，可以这样：<font color=#ff0000>vi /etc/profile.d/java.sh</font>在新的java.sh中输入以下内容： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #set java environment<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JAVA_HOME=/usr/java/jdk1.5.0_02<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export JAVA_HOME CLASSPATH PATH<br>&nbsp;&nbsp;&nbsp;&nbsp; 保存退出，然后给java.sh分配权限：chmod 755 /etc/profile.d/java.sh</p>
<p>二、安装Apache（访问代理主机）<br>&nbsp; 1.下载apache源代码 <a href="http://archive.apache.org/dist/httpd/httpd-2.2.2.tar.gz">http://archive.apache.org/dist/httpd/httpd-2.2.2.tar.gz</a></p>
<p>&nbsp;解压缩 tar fvxz httpd-2.2.2.tar.gz</p>
<p>&nbsp; 2.进入解压后的目录。进行配置：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">configure&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">prefix</span> <span style="COLOR: #000000">=/</span> <span style="COLOR: #000000">usr</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">apache&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">module</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">most&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">proxy&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">proxy</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">ajp&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">forward&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">proxy</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">connect&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">proxy</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">http&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">so&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">deflate&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">headers&nbsp;</span> <span style="COLOR: #000000">--</span> <span style="COLOR: #000000">enable</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">include</span> </div>
<p>上面的配置，用到了其他一些模块，说不定以后会用到，如支持ssi的include模块。</p>
<p>&nbsp; 3.编译（编译如果不成功，确认一下你的linux是否安装有编译所需要的c环境和其他需要的类库）<br>&nbsp;&nbsp;&nbsp; make</p>
<p>&nbsp; 4.安装 make install</p>
<p><br>&nbsp; 5.进入/usr/apache目录，运行apache&nbsp; ./apachectl -k start</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行apache后，浏览一下是否运行正常。</p>
<p>&nbsp;&nbsp;&nbsp; 关闭apache ./apachectl -k stop</p>
<p><br>&nbsp;&nbsp; 6.把apache作为linux的启动就运行服务程序<br>&nbsp;&nbsp;&nbsp;&nbsp; 执行如下操作：cp /usr/apache/bin/apachectl /etc/rc.d/init.d/httpd<br>&nbsp;&nbsp;&nbsp;&nbsp; 确认linux以前安装的httpd（apache）不需要了，你可覆盖掉以前apache的httpd文件。<br>&nbsp;&nbsp;&nbsp;&nbsp; chkconfig --add httpd<br>&nbsp;&nbsp;&nbsp;&nbsp; 运行linux的setup，把httpd服务默认设定为自动运行。<br>&nbsp;&nbsp;&nbsp;&nbsp; 到现在，你就可用另一种方式来启动、关闭apache了。如service httpd start</p>
<p><br>三、安装tomcat（Web服务器）<br>&nbsp;&nbsp;&nbsp; 1.下载jakarta-tomcat-5.5.20.tar.gz <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tar zxf jakarta-tomcat-5.5.20.tar.gz 解压文件 （如解压到/usr/local/）<br>&nbsp;&nbsp;&nbsp; 2.设置环境变量 #vi /etc/profile&nbsp; 添加<br>&nbsp; CATALINA_HOME=/usr/local/jakarta-tomcat-5.5.30<br>&nbsp; export CATALINA_HOME<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 保存退出</p>
<p>&nbsp;&nbsp;&nbsp; 3.修改JVM内存<font color=#ff0000>：/bin/catalina.sh</font> 文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在下# ----- Execute The Requested Command -----------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Bugzilla 37848: only output this if we have a TTY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ $have_tty -eq 1 ]; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Using CATALINA_BASE:&nbsp;&nbsp; $CATALINA_BASE"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Using CATALINA_HOME:&nbsp;&nbsp; $CATALINA_HOME"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ "$1" = "debug" -o "$1" = "javac" ] ; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Using JAVA_HOME:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $JAVA_HOME"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Using JRE_HOME:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $JRE_HOME"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加以下内容：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CATALINA_OPTS</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">$CATALINA_OPTS&nbsp;-Xms256m&nbsp;-Xmx512m -XX:PermSize=32m&nbsp; -XX:MaxPermSize=128m&nbsp;$JPDA_OPTS</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JAVA_OPTS</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">$JAVA_OPTS&nbsp;-Djava.awt.headless=true</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">Using&nbsp;CATALINA_OPTS:&nbsp;$CATALINA_OPTS</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">Using&nbsp;JAVA_OPTS:&nbsp;$JAVA_OPTS</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br></span></div>
<p><br>&nbsp;&nbsp;&nbsp; 4.运行/usr/local/jakarta-tomcat-5.5.30/bin/startup.sh 启动tomcat服务器 测试是否正常<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; </p>
<p>四、配置apache代理(适用mod_proxy_ajp.so)<br>&nbsp;&nbsp;&nbsp; 编辑apache配置文件 #vi /usr/apache/conf/httpd.conf<br>&nbsp;&nbsp;&nbsp; 1.配置proxy_ajp<br>&nbsp;#加载解析模块（windows下，或linux采用动态加载模式下需配置。前面我们的linux编译时把下面的模块嵌入到了apache中&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ，所以不用再加载）<br>&nbsp;LoadModule proxy_module modules/mod_proxy.so<br>&nbsp;LoadModule proxy_ajp_module modules/mod_proxy_ajp.so<br>&nbsp;&nbsp;&nbsp; 2.配置文件添加</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;ProxyPass&nbsp;</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">&nbsp;balancer<font color=#000000>:</font></span> <span style="COLOR: #008000"><font color=#000000>//</font> </span><span style="COLOR: #008000"><font color=#000000>tomcatcluster/&nbsp;lbmethod=byrequests&nbsp;stickysession=JSESSIONID&nbsp;nofailover=on&nbsp;timeout=5</font>&nbsp;</span> <span style="COLOR: #000000">maxattempts</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">3</span> <span style="COLOR: #000000"><br>&nbsp;<font color=#000000>ProxyPassReverse&nbsp;</font></span> <font color=#000000><span style="COLOR: #000000">/</span> <span style="COLOR: #000000">&nbsp;balancer<font color=#000000>:</font></span> </font><font color=#000000><span style="COLOR: #008000"><font color=#000000>//</font> </span><span style="COLOR: #008000"><font color=#000000>tomcatcluster</font>/</span> </font><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br><font color=#000000>&nbsp;</font> </span><font color=#000000><span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Proxy&nbsp;balancer:</span> </font><font color=#000000><span style="COLOR: #008000"><font color=#000000>//</font> </span><span style="COLOR: #008000"><font color=#000000>tomcatcluster</font> <font color=#000000>&gt;</font> </span></font><span style="COLOR: #008000"><br></span><font color=#000000><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;BalancerMember&nbsp;ajp:</span> <span style="COLOR: #008000"><font color=#000000>//</font> </span><span style="COLOR: #008000"><font color=#000000>192.168.40.15:8009&nbsp;smax=2&nbsp;loadfactor=1&nbsp;&nbsp;route=tomca</font> <font color=#000000>t1</font> </span></font><span style="COLOR: #008000"><br></span><font color=#000000><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;BalancerMember&nbsp;ajp<font color=#000000>:</font></span> </font><span style="COLOR: #008000"><font color=#000000>//</font> </span><span style="COLOR: #008000"><font color=#000000>192.168.71.106:8009&nbsp;smax=2&nbsp;loadfactor=2&nbsp;&nbsp;route=tomc</font> <font color=#000000>at2</font> </span><span style="COLOR: #008000"><br></span><font color=#000000><span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #000000">&lt;/</span> <span style="COLOR: #000000">Proxy</span> <span style="COLOR: #000000">&gt;</span> </font><span style="COLOR: #000000"><br></span></div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上说明请参见mod_proxy中文手册 <a href="http://www.6bee.com/tech/ApacheMenu/mod/mod_proxy.html">http://www.6bee.com/tech/ApacheMenu/mod/mod_proxy.html</a><br>&nbsp;&nbsp;&nbsp; 3.其他说明</p>
<p>&nbsp;1、apache对tomcat的支持历史：apache第2.1版本后，内置了proxy_ajp，而jk2已经没人开发了，jk则支持到apache的</p>
<p>2.0.58版本。<br>proxy_ajp配置较简单，但可配置性还不如jk2，主要表现在proxy_ajp目前只支持配置到目录，还不支持对文件名称的pattern模式匹</p>
<p>配（即还不能定义到只对jsp文件起作用）。</p>
<p>&nbsp;2、因为proxy_ajp的配置，还不支持对文件名称的pattern模式匹配，所以你要特别注意：<br>——尽量把jsp和静态文件和图片路径分不同的目录来管理；<br>——对于静态文件和图片路径，如/images，你可用&#8220;ProxyPass /images !&#8221;来禁止ProxyPass，从而来让apache来直接处理图片的请</p>
<p>求。<br>——关于apache的ssi（即shtml，include）与tomcat的集成时，shtml文件不能处于ProxyPass的控制下（即不能在ProxyPass目录）</p>
<p>，而shtml调用的jsp须在ProxyPass有效控制下；</p>
<p><br>五、配置Tomcat负载均衡、集群<br>&nbsp;&nbsp;&nbsp; 1.修改tomcat 的 conf/server.xml 的&lt;Engine&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 去掉注释&lt;Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jvmRoute是tomcat路由标示，由此区分两台tomcat主机，那么第二台就改为<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#ff0000>&lt;Engine name="Standalone" defaultHost="localhost" <font color=#ff1493>jvmRoute="tomcat2"</font>&gt;</font><br>&nbsp;&nbsp;&nbsp; 加上注释&lt;Engine name="Catalina" defaultHost="localhost"&gt;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 2.修改tomcat 的 conf/server.xml 的&lt;Connector&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; 去掉注释<font color=#ff0000>&lt;Connector port="8009" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" debug="0"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protocol="AJP/1.3" /&gt;</font>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; 3.修改tomcat 的 conf/server.xml 的&lt;Cluster&gt;&nbsp;&nbsp;&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;!--</span> <span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Cluster&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.tcp.SimpleTcpCluster</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;managerClassName</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.session.DeltaManager</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expireSessionsOnShutdown</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">false</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useDirtyFlag</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">true</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifyListenersOnReplication</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">true</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">&gt;</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Membership&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.mcast.McastService</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mcastAddr</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">228.0.0.4</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mcastPort</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">45564</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mcastFrequency</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">500</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mcastDropTime</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">3000</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Receiver&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.tcp.ReplicationListener</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcpListenAddress</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">auto</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcpListenPort</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">4001</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcpSelectorTimeout</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">100</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcpThreadCount</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">6</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Sender<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.tcp.ReplicationTransmitter</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replicationMode</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">pooled</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ackTimeout</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">5000</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span> <span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Valve&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.tcp.ReplicationValve</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">Deployer&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.deploy.FarmWarDeployer</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempDir</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/tmp/war-temp/</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deployDir</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/tmp/war-deploy/</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;watchDir</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/tmp/war-listen/</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;watchEnabled</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">false</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;</span> <span style="COLOR: #000000">ClusterListener&nbsp;className</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">org.apache.catalina.cluster.session.ClusterSessionListener</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">&lt;/</span> <span style="COLOR: #000000">Cluster</span> <span style="COLOR: #000000">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #000000">--&gt;</span> <span style="COLOR: #000000"><br></span></div>
<p>把上面的注释拿掉 就ok 了！<br></p>
<p>4.在每个webapps应用中,修改web.xml文件 添加元素&lt;distributable/&gt;<br><br>最后完工，重启tomcat,apahce测试平衡负载，新建jsp页面<br>&lt;%<br>Runtime lRuntime = Runtime.getRuntime();<br>out.println("*** BEGIN MEMORY STATISTICS ***&lt;br/&gt;");<br>out.println("Free&nbsp; Memory: "+lRuntime.freeMemory()/1024/1024+"M&lt;br/&gt;");<br>out.println("Max&nbsp;&nbsp; Memory: "+lRuntime.maxMemory()/1024/1024+"M&lt;br/&gt;");<br>out.println("Total Memory: "+lRuntime.totalMemory()/1024/1024+"M&lt;br/&gt;");<br>out.println("Available Processors : "+lRuntime.availableProcessors()+"&lt;br/&gt;");<br>out.println("*** END MEMORY STATISTICS ***");<br>%&gt;<br>&lt;br&gt;<br>&lt;%= request.getSession().getId() %&gt;<br>放入到两台tomcat的ROOT目录中测试<br><br>再测试集群(session复制)</p>
 <img src ="http://www.blogjava.net/envoydada/aggbug/81196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2006-11-15 11:06 <a href="http://www.blogjava.net/envoydada/archive/2006/11/15/81196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RedHat终端中文乱码解决</title><link>http://www.blogjava.net/envoydada/archive/2006/10/12/74758.html</link><dc:creator>Derek.Guo</dc:creator><author>Derek.Guo</author><pubDate>Thu, 12 Oct 2006 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/envoydada/archive/2006/10/12/74758.html</guid><wfw:comment>http://www.blogjava.net/envoydada/comments/74758.html</wfw:comment><comments>http://www.blogjava.net/envoydada/archive/2006/10/12/74758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/envoydada/comments/commentRss/74758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/envoydada/services/trackbacks/74758.html</trackback:ping><description><![CDATA[		<p>修改 / etc / sysconfig / i18n文件，将其改成以下内容：</p>
		<p>LANG = " zh_CN.GB18030 " <br />LANGUAGE = " zh_CN.GB18030:zh_CN.GB2312:zh_CN " <br />SUPPORTED = " zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en " <br />SYSFONT = " lat0-sun16 " </p>
 <img src ="http://www.blogjava.net/envoydada/aggbug/74758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/envoydada/" target="_blank">Derek.Guo</a> 2006-10-12 11:54 <a href="http://www.blogjava.net/envoydada/archive/2006/10/12/74758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>