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

<channel>
	<title>wd and cc &#187; apache</title>
	<atom:link href="http://wdicc.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://wdicc.com</link>
	<description>Happy every day...</description>
	<lastBuildDate>Wed, 01 Feb 2012 03:27:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Apache优化之KeepAlive</title>
		<link>http://wdicc.com/apache-keepalive/</link>
		<comments>http://wdicc.com/apache-keepalive/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 10:18:51 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Heart]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://wdicc.cn/?p=434</guid>
		<description><![CDATA[KeepAlive是在HTTP/1.1中定义的，用来保持客户机和服务器的长连接，执子之手与子偕老。通过减少建立TCP Session的次数来提高性能。常用的配置参数有{KeepAlive, KeepAliveTimeout, MaxKeepAliveRequests}。逐个说来：KeepAlive是决定开启KeepAlive支持；KeepAliveTimeout决定一 个KeepAlive的连接能保持多少时间，Timeout就尽快shutdown链接，若还有数据必须再建立新的连接 了；MaxKeepAliveRequests于KeepAliveTimeout相似，意思是服务多少个请求就shutdown连接。看个例子： KeepAlive On KeepAliveTimeout 5 意思是说，打开KeepAlive，每个连接只保持5秒就中断。 对于KeepAlive的配置需要慎重，错误的参数可能导致严重的性能问题。一个高负载的Server，如果建立的很多长连接将无法继续服 务新的连接。因此需要根据server的性质调整KeepAliveTimeout或是MaxKeepAliveRequests的值。 例如：你的网页上有三幅图画2个外部javascript，他们都存放在你自己的server上。因此将 MaxKeepAliveRequests设置为7比较合适。3幅图2个js各一个link，网页本身一个link，还有firefox传说中的 favicon.ico。当然还是要有KeepAliveTimeout的。如果客户机用了该死的IE并且设置了某个该死的选项，IE是不会向服务器发送 HEAD请求查看图片（或是其他资源）是否过期的，而是直接使用本地图片。这个时候服务器是不会计算Request的(因为压根就没有Request 嘛)。再如果只有MaxKeepAliveRequests参数，服务器会默认等待5秒才结束KeepAlive连接。通常这5秒可能玩死一个高负载的服 务器(所以说这个社会需要闪婚&#8230;)。因此打开Firefox，启动Firebug，看看你的站究竟需要多少次请求，再决定KeepAlive吧。]]></description>
			<content:encoded><![CDATA[<p>KeepAlive是在HTTP/1.1中定义的，用来保持客户机和服务器的长连接，执子之手与子偕老。通过减少建立TCP Session的次数来提高性能。常用的配置参数有{KeepAlive, KeepAliveTimeout, MaxKeepAliveRequests}。逐个说来：KeepAlive是决定开启KeepAlive支持；KeepAliveTimeout决定一 个KeepAlive的连接能保持多少时间，Timeout就尽快shutdown链接，若还有数据必须再建立新的连接 了；MaxKeepAliveRequests于KeepAliveTimeout相似，意思是服务多少个请求就shutdown连接。看个例子：</p>
<pre>   KeepAlive On
   KeepAliveTimeout 5</pre>
<p>意思是说，打开KeepAlive，每个连接只保持5秒就中断。</p>
<p>对于KeepAlive的配置需要慎重，错误的参数可能导致严重的性能问题。一个高负载的Server，如果建立的很多长连接将无法继续服 务新的连接。因此需要根据server的性质调整KeepAliveTimeout或是MaxKeepAliveRequests的值。</p>
<p>例如：你的网页上有三幅图画2个外部javascript，他们都存放在你自己的server上。因此将 MaxKeepAliveRequests设置为7比较合适。3幅图2个js各一个link，网页本身一个link，还有firefox传说中的 favicon.ico。当然还是要有KeepAliveTimeout的。如果客户机用了该死的IE并且设置了某个该死的选项，IE是不会向服务器发送 HEAD请求查看图片（或是其他资源）是否过期的，而是直接使用本地图片。这个时候服务器是不会计算Request的(因为压根就没有Request 嘛)。再如果只有MaxKeepAliveRequests参数，服务器会默认等待5秒才结束KeepAlive连接。通常这5秒可能玩死一个高负载的服 务器(所以说这个社会需要闪婚&#8230;)。因此打开Firefox，启动Firebug，看看你的站究竟需要多少次请求，再决定KeepAlive吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/apache-keepalive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>awstats 如何统计以前的日志？</title>
		<link>http://wdicc.com/awstats-log/</link>
		<comments>http://wdicc.com/awstats-log/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 09:33:18 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[awstats]]></category>

		<guid isPermaLink="false">http://blog.wdicc.com/wordpress/2007/04/02/316/</guid>
		<description><![CDATA[突然想安装一个awstats了，参考 车东 的文章，安装了一个。可是发现一个问题，设置了logfile为 access_log.%YYYY-24%MM-24%DD-24.log 之后，发现只能把昨天的日志统计进来，可是我的log下面还有好多呢，想统计以前的，怎么弄呢？幸好，awstats已经考虑到这个问题了。 awstats.pl 脚本支持在命令行指定logfile，这样简单了，改变这个参数就可以了。不过要注意的是，如果你的data里面已经处理新的日志，那么指定logfile也没用了，以前的没办法更新进来了。只能是删掉data里面的内容，然后重新从最早的开始生成一遍。我写了一个脚本来做这个事情。 #!/bin/bash &#160; awstats_dir=/opt/tt2/awstats/wwwroot/cgi-bin logfile_dir=&#34;/usr/local/apache/logs/&#34; &#160; cd $awstats_dir &#160; for file in `find $logfile_dir -name &#34;access_log.2*&#34; &#124; sort`;do #echo &#34;$file&#34; ./awstats.pl －update -config=wd -LogFile=$file done 保存为 awstats.sh ，然后执行就可以了。他会查找 logfile_dir 下面所有的 access_log.2 开头的文件，作为参数来更新记录。]]></description>
			<content:encoded><![CDATA[<p>突然想安装一个awstats了，参考 <a href="http://www.chedong.com/tech/awstats.html">车东</a> 的文章，安装了一个。可是发现一个问题，设置了logfile为 access_log.%YYYY-24%MM-24%DD-24.log 之后，发现只能把昨天的日志统计进来，可是我的log下面还有好多呢，想统计以前的，怎么弄呢？幸好，awstats已经考虑到这个问题了。</p>
<p>awstats.pl 脚本支持在命令行指定logfile，这样简单了，改变这个参数就可以了。不过要注意的是，如果你的data里面已经处理新的日志，那么指定logfile也没用了，以前的没办法更新进来了。只能是删掉data里面的内容，然后重新从最早的开始生成一遍。我写了一个脚本来做这个事情。</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="co0">#!/bin/bash</span>
&nbsp;
<span class="re2">awstats_dir</span>=<span class="sy0">/</span>opt<span class="sy0">/</span>tt2<span class="sy0">/</span>awstats<span class="sy0">/</span>wwwroot<span class="sy0">/</span>cgi-bin
<span class="re2">logfile_dir</span>=<span class="st0">&quot;/usr/local/apache/logs/&quot;</span>
&nbsp;
<span class="kw3">cd</span> <span class="re1">$awstats_dir</span>
&nbsp;
<span class="kw1">for</span> <span class="kw2">file</span> <span class="kw1">in</span> <span class="sy0">`</span><span class="kw2">find</span> <span class="re1">$logfile_dir</span> <span class="re5">-name</span> <span class="st0">&quot;access_log.2*&quot;</span> <span class="sy0">|</span> <span class="kw2">sort</span><span class="sy0">`</span>;<span class="kw1">do</span>
        <span class="co0">#echo &quot;$file&quot;</span>
        .<span class="sy0">/</span>awstats.pl －update <span class="re5">-config</span>=wd <span class="re5">-LogFile</span>=<span class="re1">$file</span>
<span class="kw1">done</span></pre></div></div>

<p>保存为 awstats.sh ，然后执行就可以了。他会查找 logfile_dir 下面所有的 access_log.2 开头的文件，作为参数来更新记录。</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/awstats-log/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>给apache加了一个compress模块，mod_deflate</title>
		<link>http://wdicc.com/compress-apache/</link>
		<comments>http://wdicc.com/compress-apache/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 07:49:05 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://blog.wdicc.com/wordpress/2007/04/02/315/</guid>
		<description><![CDATA[apache 1.3 里面有个压缩模块叫做 mod_gzip ，不支持 2.x。在2.x 里面有一个 mod_deflate 模块，也是类似的效果。想使用的话，很简单，编译的时候加上 &#8211;enable-deflate 就可以了。之后可以用 apachectl -l 看是不是正常加载了这个模块。 httpd.conf 添加下面的语句 AddOutputFilterByType DEFLATE text/html text/plain text/xml 对所有指定类似的文件都应用这个模块。添加之后访问看看。 203.86.x.x - - [02/Apr/2007:15:24:23 +0800] &#34;GET / HTTP/1.1&#34; 200 &#60;font color=&#34;#FF0000&#34;&#62;4718&#60;/font&#62; &#34;-&#34; &#34;Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3&#34; &#160; 203.86.x.x - - [02/Apr/2007:15:46:16 +0800] &#34;GET / HTTP/1.1&#34; 200 &#60;font [...]]]></description>
			<content:encoded><![CDATA[<p>apache 1.3 里面有个压缩模块叫做 mod_gzip ，不支持 2.x。在2.x 里面有一个 <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html">mod_deflate</a> 模块，也是类似的效果。想使用的话，很简单，编译的时候加上 &#8211;enable-deflate 就可以了。之后可以用 apachectl -l  看是不是正常加载了这个模块。</p>
<p>httpd.conf 添加下面的语句</p>

<div class="wp_syntax"><div class="code"><pre class="txt"> AddOutputFilterByType DEFLATE text/html text/plain text/xml</pre></div></div>

<p>对所有指定类似的文件都应用这个模块。添加之后访问看看。</p>

<div class="wp_syntax"><div class="code"><pre class="txt">203.86.x.x - - [02/Apr/2007:15:24:23 +0800] &quot;GET / HTTP/1.1&quot; 200 &lt;font color=&quot;#FF0000&quot;&gt;4718&lt;/font&gt; &quot;-&quot; 
&quot;Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) 
Gecko/20070309 Firefox/2.0.0.3&quot;
&nbsp;
203.86.x.x - - [02/Apr/2007:15:46:16 +0800] &quot;GET / HTTP/1.1&quot; 200 &lt;font color=&quot;#FF0000&quot;&gt;1684&lt;/font&gt; &quot;-&quot; 
&quot;Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) 
Gecko/20070309 irefox/2.0.0.3&quot;</pre></div></div>

<p>好像是小了。。。</p>
<p>如果error.log 里面出现了下面的错误</p>

<div class="wp_syntax"><div class="code"><pre class="txt">Mon Apr 02 15:32:19 2007] [error] an unknown filter was not added: DEFLATE</pre></div></div>

<p> 这表示apache的那个模块没有安装正确。</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/compress-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tomcat和apache桥接</title>
		<link>http://wdicc.com/tomcat-apache-bridge/</link>
		<comments>http://wdicc.com/tomcat-apache-bridge/#comments</comments>
		<pubDate>Wed, 23 Aug 2006 14:58:33 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[桥接]]></category>

		<guid isPermaLink="false">http://blog.wdicc.com/wordpress/2006/08/23/235/</guid>
		<description><![CDATA[1 下载，安装tomcat，jdk和mod_jk 下载jdk http://java.sun.com/javase/downloads/index.jsp tomcat 5.5 需要jre 1.5才可以。下载之后是一个bin文件 $chmod +x xx.bin $./xx.bin 他会将jdk解压到当前目录下面，然后作一个链接 ln -s jdk1.5.0_08 jdk 以后访问jdk文件夹即可，此处我们用JAVA_HOME来表示jdk文件夹的路径。 下载tomcat http://tomcat.apache.org/download-55.cgi 下载 Core 那个版本就可以，下载之后解压，选择放置地方之后，做一个链接 $ln -s apache-tomcat-5.5.17 tomcat 以后访问tomcat文件夹即可，此处我们用TOMCAT_HOME来表示tomcat的安装路径。 下载 mod_jk ，这个是用来完成apache和tomcat桥接的模块， http://www.apache.org/dist/tomcat/tomcat-connectors/jk/ 。 可以下载已经编译好的模块，不过要注意要和自己的apache版本对应才行。也可以下载source自己编译，这里我们自己编译。 下载source之后，解压，进入解压后的目录，然后 $cd native $./configure --with-apxs=/usr/local/apache/bin/apxs #后面是apxs的目录 也可以 $./configure --with-apache=/usr/local/apache #apache的目录 $make 编译完成之后，复制桥接模块到apache的modules目录 $cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/ 2 配置 jdk的环境需要配置一个系统变量JAVA_HOME，可以写到/etc/profile中，或者修改tomcat的启动停止脚本来设置java环境也可以（这]]></description>
			<content:encoded><![CDATA[<p>1 下载，安装tomcat，jdk和mod_jk</p>
<p>下载jdk  <a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</a><br />
tomcat 5.5 需要jre 1.5才可以。下载之后是一个bin文件</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="re1">$chmod</span> +x xx.bin
$.<span class="sy0">/</span>xx.bin</pre></div></div>

<p>他会将jdk解压到当前目录下面，然后作一个链接</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="kw2">ln</span> <span class="re5">-s</span> jdk1.5.0_08 jdk</pre></div></div>

<p>以后访问jdk文件夹即可，此处我们用JAVA_HOME来表示jdk文件夹的路径。</p>
<p>下载tomcat <a href="http://tomcat.apache.org/download-55.cgi">http://tomcat.apache.org/download-55.cgi</a><br />
下载 Core 那个版本就可以，下载之后解压，选择放置地方之后，做一个链接</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="re1">$ln</span> <span class="re5">-s</span> apache-tomcat-5.5.17 tomcat</pre></div></div>

<p>以后访问tomcat文件夹即可，此处我们用TOMCAT_HOME来表示tomcat的安装路径。</p>
<p>下载 mod_jk ，这个是用来完成apache和tomcat桥接的模块，<a href="http://www.apache.org/dist/tomcat/tomcat-connectors/jk/"> http://www.apache.org/dist/tomcat/tomcat-connectors/jk/</a> 。<br />
可以下载已经编译好的模块，不过要注意要和自己的apache版本对应才行。也可以下载source自己编译，这里我们自己编译。</p>
<p>下载source之后，解压，进入解压后的目录，然后</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="re1">$cd</span> native
$.<span class="sy0">/</span>configure <span class="re5">--with-apxs</span>=<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>apache<span class="sy0">/</span>bin<span class="sy0">/</span>apxs <span class="co0">#后面是apxs的目录</span>
也可以
$.<span class="sy0">/</span>configure <span class="re5">--with-apache</span>=<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>apache <span class="co0">#apache的目录</span>
<span class="re1">$make</span></pre></div></div>

<p>编译完成之后，复制桥接模块到apache的modules目录</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span class="re1">$cp</span> .<span class="sy0">/</span>apache-<span class="nu0">2.0</span><span class="sy0">/</span>mod_jk.so <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>apache<span class="sy0">/</span>modules<span class="sy0">/</span></pre></div></div>

<p>2 配置</p>
<p>jdk的环境需要配置一个系统变量JAVA_HOME，可以写到/etc/profile中，或者修改tomcat的启动停止脚本来设置java环境也可以（这</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/tomcat-apache-bridge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache的rewrite一点配置心得</title>
		<link>http://wdicc.com/apache-rewrite/</link>
		<comments>http://wdicc.com/apache-rewrite/#comments</comments>
		<pubDate>Wed, 14 Jun 2006 11:13:24 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://blog.wdicc.com/?p=173</guid>
		<description><![CDATA[apache这里有一些奇怪的日志。 211.90.119.118 &#8211; - [12/Apr/2006:00:00:12 +0800] “GET http://abc.com.cn/www/x.jsp HTTP/1.1&#8243; 200 2994 “-” “SEC-schx639 UP.Browser/4.1.26l” 通常GET这里都是“/www/x.jsp”的，可是这个是怎么产生的呢？通过浏览器访问http://abc.com.cn/http://abc.com.cn/www/x.jsp，也不能产生这种请求，后来查看apache手册，这个引号里面表示的是“请求的第一条信息”，google了一下才知道，可以用下面的方式产生这种日志。 telnet abc.com.cn 80GET http://abc.com.cn/www/x.jsp HTTP/1.1 这样看来，这个请求应该是不正确的，“get /www/x.jsp HTTP/1.1”才对。这个请求被转发给weblogic之后，weblogic会处理不了，因为他会去找“http://abc.com.cn/http://abc.com.cn/www/x.jsp”这个文件，显然是找不到的。 不过幸好，weblogic有个PathTrim设置，将请求路径种的“http://abc.com.cn”给他去掉就可以了。 &#60;IfModule mod_weblogic.c&#62;WebLogicHost 192.168.0.252WebLogicPort 7050PathTrim http://abc.com.cnMatchExpression *.jsp&#60;/IfModule&#62; 问题似乎解决了。不过此后又发现我们的域名不止这一个，还有def.com.cn和dfg.com.cn，解决方法似乎也很简单，多添加几个PathTrim呗，但是此后你就会发现，weblogic似乎比较弱智，只有最后一个PathTrim设置会生效……，查看了weblogic的文档也没有找到解决方法，他那里也没有说可以写几个。 这样就需要从apache这里解决，幸好apache这里还有虚拟主机。针对各个域名分别配置几个虚拟主机，建立基于域名的虚拟主机。文档可以参考这里&#160; 。 需要注意的是，基于域名的虚拟主机配置好之后，如果用虚拟主机里面没有的域名访问的时候，他会去匹配第一个虚拟主机，同样，用ip访问也会如此。 当一个请求到达的时候，服务器会首先检查它是否使用了一个能和 NameVirtualHost相匹配的IP地址。如果能够匹配， 它就会查找每个与这个IP地址相对应的&#60;VirtualHost&#62;配置段， 并尝试找出一个ServerName或ServerAlias配置项与请求的主机名相同的。 如果找到了，它就会使用这个服务器的配置。 否则，将使用符合这个IP地址的第一个列出的虚拟主机。 配置好虚拟主机之后，上面的问题就解决了。接着就发现有些终端不能正常访问业务了。查看全局的配置，有些rewrite rule的配置，想当然认为虚拟主机会继承全局设置。其实不是这样的，全局的对虚拟主机的没有任何影响。还需要在虚拟主机中单独设置。 RewriteEngine onRewriteLog /usr/local/apache/apache_rewrite_log.logRewriteLogLevel 2RewriteRule&#160; xx 建议加上log的设置，这样可以很好的检查rewrite有没有起作用。此外，也一定要加上RewriteEngine on，否则任何rewrite rule都不会起作用。]]></description>
			<content:encoded><![CDATA[<p>apache这里有一些奇怪的日志。</p>
<p><span style="color: rgb(0, 0, 255)">211.90.119.118 &#8211; - [12/Apr/2006:00:00:12 +0800] “GET http://abc.com.cn/www/x.jsp HTTP/1.1&#8243; 200 2994 “-” “SEC-schx639 UP.Browser/4.1.26l”</span></p>
<p>通常GET这里都是“/www/x.jsp”的，可是这个是怎么产生的呢？通过浏览器访问http://abc.com.cn/http://abc.com.cn/www/x.jsp，也不能产生这种请求，后来查看apache手册，这个引号里面表示的是“请求的第一条信息”，google了一下才知道，可以用下面的方式产生这种日志。</p>
<p><span style="color: rgb(0, 0, 255)">telnet abc.com.cn 80</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">GET http://abc.com.cn/www/x.jsp HTTP/1.1</span></p>
<p><span id="more-173"></span>这样看来，这个请求应该是不正确的，“get /www/x.jsp HTTP/1.1”才对。这个请求被转发给weblogic之后，weblogic会处理不了，因为他会去找“http://abc.com.cn/http://abc.com.cn/www/x.jsp”这个文件，显然是找不到的。</p>
<p>不过幸好，weblogic有个PathTrim设置，将请求路径种的“http://abc.com.cn”给他去掉就可以了。</p>
<p><span style="color: rgb(0, 0, 255)">&lt;IfModule mod_weblogic.c&gt;</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">WebLogicHost 192.168.0.252</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">WebLogicPort 7050</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">PathTrim http://abc.com.cn</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">MatchExpression *.jsp</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">&lt;/IfModule&gt;</span></p>
<p>问题似乎解决了。不过此后又发现我们的域名不止这一个，还有def.com.cn和dfg.com.cn，解决方法似乎也很简单，多添加几个PathTrim呗，但是此后你就会发现，weblogic似乎比较弱智，只有最后一个PathTrim设置会生效……，查看了weblogic的文档也没有找到解决方法，他那里也没有说可以写几个。</p>
<p>这样就需要从apache这里解决，幸好apache这里还有虚拟主机。针对各个域名分别配置几个虚拟主机，建立基于域名的虚拟主机。文档可以参考<a href="http://www.douzhe.com/apm/ApacheManual/zh-cn/vhosts/name-based.html">这里</a>&nbsp; 。</p>
<p>需要注意的是，基于域名的虚拟主机配置好之后，如果用虚拟主机里面没有的域名访问的时候，他会去匹配第一个虚拟主机，同样，用ip访问也会如此。</p>
<p>当一个请求到达的时候，服务器会首先检查它是否使用了一个能和 NameVirtualHost相匹配的IP地址。如果能够匹配， 它就会查找每个与这个IP地址相对应的&lt;VirtualHost&gt;配置段， 并尝试找出一个ServerName或ServerAlias配置项与请求的主机名相同的。 如果找到了，它就会使用这个服务器的配置。 否则，将使用符合这个IP地址的第一个列出的虚拟主机。</p>
<p>配置好虚拟主机之后，上面的问题就解决了。接着就发现有些终端不能正常访问业务了。查看全局的配置，有些rewrite rule的配置，想当然认为虚拟主机会继承全局设置。其实不是这样的，全局的对虚拟主机的没有任何影响。还需要在虚拟主机中单独设置。</p>
<p><span style="color: rgb(0, 0, 255)">RewriteEngine on</span><br style="color: rgb(0, 0, 255)" /><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">RewriteLog /usr/local/apache/apache_rewrite_log.log</span><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">RewriteLogLevel 2</span><br style="color: rgb(0, 0, 255)" /><br style="color: rgb(0, 0, 255)" /><span style="color: rgb(0, 0, 255)">RewriteRule&nbsp; xx</span></p>
<p>建议加上log的设置，这样可以很好的检查rewrite有没有起作用。此外，也一定要加上RewriteEngine on，否则任何rewrite rule都不会起作用。</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/apache-rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>weblogic的“Too many open files”错和apache的“CONNECTION_REFUSED”错</title>
		<link>http://wdicc.com/too-many-open-files/</link>
		<comments>http://wdicc.com/too-many-open-files/#comments</comments>
		<pubDate>Tue, 30 May 2006 15:19:40 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://blog.wdicc.com/?p=168</guid>
		<description><![CDATA[weblogic和apache桥接之后，访问量大的时候，遇到了weblogic报下面的错误： #### #### #### #### weblogic产生这个错误以后，就会拒绝服务，这时通过IE已经访问不了了。所以接下来就会出现apache报下面的错误： [Tue May 30 13:00:57 2006] [error] CONNECTION_REFUSED [os error=0, line 1600 of ../nsapi/URL.cpp]: 218.206.70.193:7001 errno= 0 这时访问apache会提示和weblogic的桥出了问题。 这个问题已经遇到很多次了，但通常都是夜间，第二天查看日志的时候，会发现那个时候确实访问量比较大。查看当时的连接情况可以看到，apache和java连接都700多。看了网上的说明，调整了系统参数、调整了weblogic的设置等，都不见效。 http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html http://e-docs.bea.com/wls/docs81/perform/index.html 今天又出现这个情况了，不过是白天，和web应用的作者一起对weblogic的情况进行了观察。 通过weblogic控制台，可以看到Throughput这里大都是在处理1左右的访问，Queue Length这里却在不停的涨，开始就对Thread count做了修改，从50调整到了400，但是还是可以看到Thread会用完，一会Queue Length就又涨起来了。 分析一下就可以知道，情况应该是Queue的线程对访问的处理速度太慢，导致需要处理的队列越来越多。需要处理队列的增长速度比队列的处理速度慢，这样不管有多少线程，肯定最后都会导致不够用。 现在大家就开始考虑问题是不是出在应用这里了，应用执行速度慢，weblogic线程就会一直占着，就会导致线程用尽。而实际上确实是应用这里的问题。 应用对访问的处理速度很快，有访问进来就先放到队列，而队列的处理速度却是500ms处理一下，这样一秒也就处理2个。这样问题的原因就很明确了，1s内外部访问应用可能有10来次，而应用才处理2个，所以自然会将线程占满了。 调整队列处理速度之后问题就解决了，空闲线程一直是400。]]></description>
			<content:encoded><![CDATA[<p>weblogic和apache桥接之后，访问量大的时候，遇到了weblogic报下面的错误：</p>
<p><span style="color: rgb(255, 0, 0)">####<2006-5-30 ÏÂÎç12Ê±38·Ö19Ãë CST> <Notice> <WebLogicServer> <myapp.vivaful.com> <myserver> <ListenThread.Default> <<WLS Ke</span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">rnel>> <> <BEA-000205> <After having failed to listen, the server is now listening on port 7001.> </span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">####<2006-5-30 ÏÂÎç12Ê±38·Ö19Ãë CST> <Critical> <WebLogicServer> <myapp.vivaful.com> <myserver> <ListenThread.Default> <<WLS </span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">Kernel>> <> <BEA-000204> <Failed to listen on port 7001, failure count: 1, failing for 0 seconds, java.net.SocketException: T</span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">oo many open files> </span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">####<2006-5-30 ÏÂÎç12Ê±38·Ö20Ãë CST> <Notice> <WebLogicServer> <myapp.vivaful.com> <myserver> <ListenThread.Default> <<WLS Ke</span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">rnel>> <> <BEA-000205> <After having failed to listen, the server is now listening on port 7001.> </span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">####<2006-5-30 ÏÂÎç12Ê±38·Ö20Ãë CST> <Critical> <WebLogicServer> <myapp.vivaful.com> <myserver> <ListenThread.Default> <<WLS </span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">Kernel>> <> <BEA-000204> <Failed to listen on port 7001, failure count: 1, failing for 0 seconds, java.net.SocketException: T</span><br style="color: rgb(255, 0, 0)" /><span style="color: rgb(255, 0, 0)">oo many open files> </span><br />
<span style="color: rgb(255, 0, 0)"></span><span style="color: rgb(255, 0, 0)"></span><br />
weblogic产生这个错误以后，就会拒绝服务，这时通过IE已经访问不了了。所以接下来就会出现apache报下面的错误：</p>
<p><span style="color: rgb(255, 0, 0)">[Tue May 30 13:00:57 2006] [error] CONNECTION_REFUSED [os error=0, line 1600 of ../nsapi/URL.cpp]: 218.206.70.193:7001 errno= 0<br />
</span><br /><span id="more-168"></span>这时访问apache会提示和weblogic的桥出了问题。</p>
<p>这个问题已经遇到很多次了，但通常都是夜间，第二天查看日志的时候，会发现那个时候确实访问量比较大。查看当时的连接情况可以看到，apache和java连接都700多。看了网上的说明，调整了系统参数、调整了weblogic的设置等，都不见效。</p>
<p>http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html</p>
<p>http://e-docs.bea.com/wls/docs81/perform/index.html</p>
<p>今天又出现这个情况了，不过是白天，和web应用的作者一起对weblogic的情况进行了观察。</p>
<p>通过weblogic控制台，可以看到<span class="dialog-label" id="wl_control_weblogic_management_configuration_ServerMBean_lookupServerRuntime_ExecuteQueueRuntime_ServicedRequestTotalCount_label">Throughput这里大都是在处理1左右的访问，</span><span class="dialog-label" id="wl_control_weblogic_management_configuration_ServerMBean_lookupServerRuntime_ExecuteQueueRuntime_PendingRequestCurrentCount_label">Queue Length这里却在不停的涨，开始就对</span><a href="http://218.206.70.193:7001/console/actions/mbean/ListMBeansAction?wl_sort_domain_ExecuteQueueTable_config=0300&#038;reloadNav=false&#038;tab=config&#038;MBeanClassName=weblogic.management.configuration.ExecuteQueueMBean&#038;MBeanClass=weblogic.management.configuration.ExecuteQueueMBean&#038;scopeMBean=anymusic%3AName%3Dmyserver%2CType%3DServer"><span class="column-header"></span></a><span style="text-decoration: underline">T</span>hread  count做了修改，从50调整到了400，但是还是可以看到Thread会用完，一会<span class="dialog-label" id="wl_control_weblogic_management_configuration_ServerMBean_lookupServerRuntime_ExecuteQueueRuntime_PendingRequestCurrentCount_label">Queue Length就又涨起来了。</p>
<p>分析一下就可以知道，情况应该是Queue的线程对访问的处理速度太慢，导致需要处理的队列越来越多。需要处理队列的增长速度比队列的处理速度慢，这样不管有多少线程，肯定最后都会导致不够用。</p>
<p>现在大家就开始考虑问题是不是出在应用这里了，应用执行速度慢，weblogic线程就会一直占着，就会导致线程用尽。而实际上确实是应用这里的问题。</p>
<p>应用对访问的处理速度很快，有访问进来就先放到队列，而队列的处理速度却是500ms处理一下，这样一秒也就处理2个。这样问题的原因就很明确了，1s内外部访问应用可能有10来次，而应用才处理2个，所以自然会将线程占满了。</p>
<p>调整队列处理速度之后问题就解决了，空闲线程一直是400。</span><span class="dialog-label" id="wl_control_weblogic_management_configuration_ServerMBean_lookupServerRuntime_ExecuteQueueRuntime_PendingRequestCurrentCount_label"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/too-many-open-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

