限制并發(fā)數(shù)
下載模塊:
到官方網(wǎng)址: http://www.nowhere-land.org/programs/mod_vhost_limit/下載模塊
http://www.nowhere-land.org/prog ... st_limit-0.4.tar.gz
安裝:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so
在 httpd.conf 加入:
LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c
配置:
MaxClients 150
ExtendedStatus On
NameVirtualHost *
<VIRTUALHOST * />
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100
<VIRTUALHOST * />
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30
<VIRTUALHOST * />
ServerName server3
DocumentRoot /some/where/3
其中: server1 被限制為 100 個并發(fā)線程數(shù)。 server2 被限制為 30 個并發(fā)線程數(shù)。 server3 沒有被限制。
注:需 mod_status 的 ExtendedStatus On 支持!!
如超出限制的并發(fā)數(shù)在客戶端就會出現(xiàn)503錯誤
----------------------------------------------------------------------------------------------
限制IP連接數(shù)
到這里下載模塊 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
安裝:
tar zxvf mod_limitipconn-0.04.tar.gz
cd mod_limitipconn-0.04
make APXS=/usr/local/apache/bin/apxs ß-----這里要按你自己的路徑設(shè)置
make install APXS=/usr/local/apache/bin/apxs ß-----這里要按你自己的路徑設(shè)置
編輯httpd.conf
添加
全局變量:
< IfModule mod_limitipconn.c >
< Location / > # 所有虛擬主機(jī)的/目錄
MaxConnPerIP 3 # 每IP只允許3個并發(fā)連接
NoIPLimit image/* # 對圖片不做IP限制
< /Location >
< Location /mp3 > # 所有主機(jī)的/mp3目錄
MaxConnPerIP 1 # 每IP只允許一個連接請求
OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
< /Location >
< /IfModule >
或者虛擬主機(jī)的:
< VirtualHost xx.xxx.xx.xx > ##ip 地址
ServerAdmin easy@phpv.net
DocumentRoot /home/easy
ServerName www.phpv.net
< IfModule mod_limitipconn.c >
< Location / >
MaxConnPerIP 5
NoIPLimit image/*
< /Location >
< Location /mp3 > # 所有主機(jī)的/mp3目錄
MaxConnPerIP 2 # 每IP只允許一個連接請求
OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
< /Location >
< /IfModule >
< /VirtualHost >
----------------------------------------------------------------------------------------------
限制帶寬:
下載模塊 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
安裝:
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so
<-------以上/usr/local/apache請設(shè)置為你的路徑
編輯httpd.conf
添加:
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
重啟你的apache
相關(guān)文檔:
Global configuration directives :
* BandWidthDataDir
Syntax : BandWidthDataDir <directory>
Default : "/tmp/apachebw"
Context : server config
Sets the name of the root directory used by mod_bandwidth to store its internal temporary information. Don't forget to create the needed directories : <directory>/master and <directory>/link
* BandWidthModule
Syntax : BandWidthModule <On|Off>
Default : Off
Context : per server config
Enable or disable totaly the whole module. By default, the module is disable so it is safe to compile it in the server anyway.
PLEASE, NOTE THAT IF YOU SET A BANDWIDTH LIMIT INSIDE A VIRTUALHOST BLOCK, YOU ALSO __NEED__ TO PUT THE "BandWidthModule On" DIRECTIVE INSIDE THAT VIRTUALHOST BLOCK !
IF YOU SET BANDWIDTH LIMITS INSIDE DIRECTORY BLOCKS (OUTSIDE OF ANY VIRTUALHOST BLOCK), YOU ONLY NEED TO PUT THE "BandWidthModule On" DIRECTIVE ONCE, OUTSIDE OF ANY VIRTUALHOST OR DIRECTORY BLOCK.
* BandWidthPulse
Syntax : BandWidthPulse <microseconds>
Default :
Context : per server config
Change the algorithm used to calculate bandwidth and transmit data. In normal mode (old mode), the module try to transmit data in packets of 1KB. That mean that if the bandwidth available is of 512B, the module will transmit 1KB, wait 2 seconds, transmit another 1KB and so one.
Seting a value with "BandWidthPulse", will change the algorithm so that the server will always wait the same amount of time between sending packets but the size of the packets will change. The value is in microseconds. For example, if you set "BandWidthPulse 1000000" (1 sec) and the bandwidth available is of 512B, the sever will transmit 512B, wait 1 second, transmit 512B and so on.
The advantage is a smother flow of data. The disadvantage is a bigger overhead of data transmited for packet header. Setting too small a value (bellow 1/5 of a sec) is not realy useful and will put more load on the system and generate more traffic for packet header.
Note also that the operating system may do some buffering on it's own and so defeat the purpose of setting small values.
This may be very useful on especialy crowded network connection : In normal mode, several seconds may happen between the sending of a full packet. This may lead to timeout or people may believe that the connection is hanging. Seting a value of 1000000 (1 sec) would guarantee that some data are sent every seconds...
下載模塊:
到官方網(wǎng)址: http://www.nowhere-land.org/programs/mod_vhost_limit/下載模塊
http://www.nowhere-land.org/prog ... st_limit-0.4.tar.gz
安裝:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so
在 httpd.conf 加入:
LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c
配置:
MaxClients 150
ExtendedStatus On
NameVirtualHost *
<VIRTUALHOST * />
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100
<VIRTUALHOST * />
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30
<VIRTUALHOST * />
ServerName server3
DocumentRoot /some/where/3
其中: server1 被限制為 100 個并發(fā)線程數(shù)。 server2 被限制為 30 個并發(fā)線程數(shù)。 server3 沒有被限制。
注:需 mod_status 的 ExtendedStatus On 支持!!
如超出限制的并發(fā)數(shù)在客戶端就會出現(xiàn)503錯誤
----------------------------------------------------------------------------------------------
限制IP連接數(shù)
到這里下載模塊 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
安裝:
tar zxvf mod_limitipconn-0.04.tar.gz
cd mod_limitipconn-0.04
make APXS=/usr/local/apache/bin/apxs ß-----這里要按你自己的路徑設(shè)置
make install APXS=/usr/local/apache/bin/apxs ß-----這里要按你自己的路徑設(shè)置
編輯httpd.conf
添加
全局變量:
< IfModule mod_limitipconn.c >
< Location / > # 所有虛擬主機(jī)的/目錄
MaxConnPerIP 3 # 每IP只允許3個并發(fā)連接
NoIPLimit image/* # 對圖片不做IP限制
< /Location >
< Location /mp3 > # 所有主機(jī)的/mp3目錄
MaxConnPerIP 1 # 每IP只允許一個連接請求
OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
< /Location >
< /IfModule >
或者虛擬主機(jī)的:
< VirtualHost xx.xxx.xx.xx > ##ip 地址
ServerAdmin easy@phpv.net
DocumentRoot /home/easy
ServerName www.phpv.net
< IfModule mod_limitipconn.c >
< Location / >
MaxConnPerIP 5
NoIPLimit image/*
< /Location >
< Location /mp3 > # 所有主機(jī)的/mp3目錄
MaxConnPerIP 2 # 每IP只允許一個連接請求
OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
< /Location >
< /IfModule >
< /VirtualHost >
----------------------------------------------------------------------------------------------
限制帶寬:
下載模塊 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
安裝:
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so
<-------以上/usr/local/apache請設(shè)置為你的路徑
編輯httpd.conf
添加:
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
重啟你的apache
相關(guān)文檔:
Global configuration directives :
* BandWidthDataDir
Syntax : BandWidthDataDir <directory>
Default : "/tmp/apachebw"
Context : server config
Sets the name of the root directory used by mod_bandwidth to store its internal temporary information. Don't forget to create the needed directories : <directory>/master and <directory>/link
* BandWidthModule
Syntax : BandWidthModule <On|Off>
Default : Off
Context : per server config
Enable or disable totaly the whole module. By default, the module is disable so it is safe to compile it in the server anyway.
PLEASE, NOTE THAT IF YOU SET A BANDWIDTH LIMIT INSIDE A VIRTUALHOST BLOCK, YOU ALSO __NEED__ TO PUT THE "BandWidthModule On" DIRECTIVE INSIDE THAT VIRTUALHOST BLOCK !
IF YOU SET BANDWIDTH LIMITS INSIDE DIRECTORY BLOCKS (OUTSIDE OF ANY VIRTUALHOST BLOCK), YOU ONLY NEED TO PUT THE "BandWidthModule On" DIRECTIVE ONCE, OUTSIDE OF ANY VIRTUALHOST OR DIRECTORY BLOCK.
* BandWidthPulse
Syntax : BandWidthPulse <microseconds>
Default :
Context : per server config
Change the algorithm used to calculate bandwidth and transmit data. In normal mode (old mode), the module try to transmit data in packets of 1KB. That mean that if the bandwidth available is of 512B, the module will transmit 1KB, wait 2 seconds, transmit another 1KB and so one.
Seting a value with "BandWidthPulse", will change the algorithm so that the server will always wait the same amount of time between sending packets but the size of the packets will change. The value is in microseconds. For example, if you set "BandWidthPulse 1000000" (1 sec) and the bandwidth available is of 512B, the sever will transmit 512B, wait 1 second, transmit 512B and so on.
The advantage is a smother flow of data. The disadvantage is a bigger overhead of data transmited for packet header. Setting too small a value (bellow 1/5 of a sec) is not realy useful and will put more load on the system and generate more traffic for packet header.
Note also that the operating system may do some buffering on it's own and so defeat the purpose of setting small values.
This may be very useful on especialy crowded network connection : In normal mode, several seconds may happen between the sending of a full packet. This may lead to timeout or people may believe that the connection is hanging. Seting a value of 1000000 (1 sec) would guarantee that some data are sent every seconds...