Apache 1.3限制并发连接
由于网站内容有很多下载,而大家一般使用flasget下载,一般使用多线程,同时有很多人在大量下载资料的话,就会形成并发连接饱和,后面的人就无法下载使用了。
这个问题一直困扰我们。
解决的思路应该有两个方面,一个是限制单ip的并发连接。一个是增加服务器并发连接的容量。目前服务器默认是1024个连接,还不会增加。
关于限制并发的问题,经过多次测试,基本解决了apache 1.3限制并发连接的问题。
http://www.gknw.net/development/apache/apache-1.3/win32/modules/
从这里下载:
mod_limitipconn-0.04-w32.zip
解压后,其中有些说明文件。
有mod_limitipconn.so文件,拷贝文件到apache的modules目录下。
1、编辑 httpd.conf
在相应位置,增加
LoadModule limitipconn_module modules/mod_limitipconn.so
AddModule mod_limitipconn.c
2、在AddModule mod_limitipconn.c后面,即增加mod设置:
# Configuration for mod_limitipconn
<IfModule mod_limitipconn.c>
<Location /somewhere>
MaxConnPerIP 3
# exempting images from the connection limit is often a good
# idea if your web page has lots of inline images, since these
# pages often generate a flurry of concurrent image requests
NoIPLimit image/*
</Location>
<Location /mp3>
MaxConnPerIP 1
# In this case, all MIME types other than audio/mpeg and video*
# are exempt from the limit check
OnlyIPLimit audio/mpeg video
</Location>
</IfModule>
# End of mod_limitipconn.
3、设置
ExtendedStatus On
4、在这里一般以为就可以了,结果出现严重错误,apache无法启动。
错误是:
The Apache service named D:\Server\Apache\Apache.exe reported the following error:
>>> Invalid command 'ExtendedStatus', perhaps mis-spelled or defined by a module not included in the server configuration <<<
before the error.log file could be opened.
More information may be available in the error.log file. .
通过搜索,发现是因为mod_status模块没有加载的缘故。
通过loadModule和downmodule加载mod_status模块。
重新启动apahce,解决问题。
5、如果要看access文件,可以修改:
# Optional supress logging of denied access
CustomLog logs/access_log common env=!LIMITIP
6、控制特殊文件的下载:
AddType application/x-rar .rar .iso #添加自定义minetype,控制iso和rar的下载
< IfModule mod_limitipconn.c >
< Location / >
MaxConnPerIP 5
NoIPLimit image/*
< /Location >
< Location /upload >
MaxConnPerIP 1 #upload文件夹限制下载
OnlyIPLimit audio/mpeg video/* application/x-rar #只对音频视频文件,自定义minetype文件起作用
< / Location >
< / IfModule >