apache – 夏清然的日志 https://www.qingran.net Xia Qingran Geek Blog Sun, 07 Aug 2016 09:50:33 +0000 en-US hourly 1 https://wordpress.org/?v=4.6.1 112893047 Apache2 KeepAlive详解 + subversion优化 https://www.qingran.net/2010/07/apache2-keepalive%e8%af%a6%e8%a7%a3/ https://www.qingran.net/2010/07/apache2-keepalive%e8%af%a6%e8%a7%a3/#comments Thu, 08 Jul 2010 17:23:03 +0000 https://www.qingran.net/?p=502 由于现在subversion的数据有10GB之多,并且一次checkout会有10w个文件之多,所以这两天看如何优化一下我们的subversion,其中一个点就是apache2的keep alive参数。

Apache Keep-Alive扩展源自自HTTP/1.0和HTTP/1.1标准的的持久链接特性。提供了相对长效的HTTP链接方式,用以在同一个TCP连接中进行多次HTTP请求。KeepAlive设置出现在Apache 1.2版本以后。

对于HTTP/1.0的客户端来说,仅当客户端指定使用的时候才会使用持久链接连接。此外,仅当能够预先知道传输的内容长度时,才会与HTTP/1.0的客户端建立持久链接连接。而对于HTTP/1.1的客户端来说,如果没有进行特殊指定,持久将是默认的连接方式。如果客户端进行了请求,将使用数据分块以解决在持久链接里发送未知长度内容的问题。

KeepAliveTimeout的设置说明:
Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。
对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。

MaxKeepAliveRequests的设置说明:
MaxKeepAliveRequests指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0″,将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。

通过Apache的设置说明,我们明白在对于一个包含许多图片、css、js的静态内容网页, 客户端会在瞬间发出多个HTTP请求,此时多次建立TCP连接会大大降低响应速度且耗费服务器端资源。 此时通过持续连接,可以允许用户在一个TCP连接中发出多个HTTP请求, 减少TCP连接建立次数,提高响应速度。我们可以通过access log统计出连续HTTP请求出现的次数、间隔时间、访问量, 以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用;太大了,该断开连接迟迟的在等待,不仅浪费TCP连接数,而且系统中的apache2的进程数目会因此不断增加,使得系统负载升高。

哪么什么决定着我们是不是要开启KeepAlive的因素就很简单了:就是用户一个页面请求中是否会引发向同一个apache2服务器发出多个HTTP的请求。

但是当你的服务器只是在处理动态网页请求时,由于用户很少会瞬间请求多个动态网页(一般都是打开页面之后阅读好半天才点下一页),此时打开KeepAlive无异于浪费TCP连接数。所以此时应该把KeepAlive off之。

而对于提供静态文件服务,例如图片或静态文件服务,如果一用户需要同时从这个服务上得到数个甚至数十个文件,那么KeepAlive不仅仅能减少TCP的链接请求,更能节省apache2的进程资源。
而对于subversion,由于是一个HTTP同步一个文件,所以特别需要KeepAlive的支持,以下是我的配置:

KeepAlive on
KeepAliveTimeout 5
MaxKeepAliveRequests 0
MaxRequestsPerChild 1000
]]>
https://www.qingran.net/2010/07/apache2-keepalive%e8%af%a6%e8%a7%a3/feed/ 2 502
修改WordPress博客正文链接后404的解决 https://www.qingran.net/2010/02/%e4%bf%ae%e6%94%b9wordpress%e5%8d%9a%e5%ae%a2%e6%ad%a3%e6%96%87%e9%93%be%e6%8e%a5%e5%90%8e404%e7%9a%84%e8%a7%a3%e5%86%b3/ https://www.qingran.net/2010/02/%e4%bf%ae%e6%94%b9wordpress%e5%8d%9a%e5%ae%a2%e6%ad%a3%e6%96%87%e9%93%be%e6%8e%a5%e5%90%8e404%e7%9a%84%e8%a7%a3%e5%86%b3/#respond Sun, 21 Feb 2010 07:11:58 +0000 https://www.qingran.net/?p=22 修改wordpress的博客正文的URL样式,从默认的

https://www.qingran.net/?p=12

修改为了

https://www.qingran.net/2010/02/sample-post/

不过修改完成后马上报了404错误,改回default一切正常。很是奇怪,仔细追了一下wordpress的实现,发现它是通过设定apache 的rewrite规则来把url的请求都交给index.php来处理,而所有的rewrite规则都写在了wordpress目录的.htaccess 文件下。

所以要解决此问题要依次检查以下3个地方:

0,观察apache2是否启用了rewrite模块:

httpd -M

如果没有启用,启用之。

1,看wordpress目录下是否创建了.htaccess文件,且此文件需要有写权限。

2,wordpress所在目录的AllowOverRide属性需要设置为All。

]]>
https://www.qingran.net/2010/02/%e4%bf%ae%e6%94%b9wordpress%e5%8d%9a%e5%ae%a2%e6%ad%a3%e6%96%87%e9%93%be%e6%8e%a5%e5%90%8e404%e7%9a%84%e8%a7%a3%e5%86%b3/feed/ 0 22