IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)服務(wù)器WEB服務(wù)器 → Linux下Apache并發(fā)連接數(shù)和帶寬控制

Linux下Apache并發(fā)連接數(shù)和帶寬控制

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

  Linux+Apache的穩(wěn)定性、安全性和性能以及低廉的價(jià)格正在贏得越來(lái)越多的市場(chǎng)份額,使用Linux+Apache作網(wǎng)站服務(wù)器的朋友也越來(lái)越多,而Apache作為一種http服務(wù),相比FTP總是不容易控制,特別是當(dāng)網(wǎng)站以http方式提供軟件/音樂(lè)下載時(shí),若是每個(gè)用戶都開(kāi)啟多個(gè)線程并沒(méi)有帶寬的限制,將很快達(dá)到http的最大連接數(shù)或者造成網(wǎng)絡(luò)壅塞,使得網(wǎng)站的許多正常服務(wù)都無(wú)法運(yùn)行。不過(guò),Apache的使用者們?cè)缫验_(kāi)發(fā)出了mod_limitipconn和mod_bandwidth兩個(gè)模塊,來(lái)控制http的并發(fā)連接數(shù)和用戶所能夠使用的帶寬,下面將以RedHat Linux 7.3+Apache 1.3.7來(lái)說(shuō)明它們的使用方法。

一、使用mod_limitipconn限制Apache的并發(fā)連接數(shù)

  mod_limitipconn可以控制每個(gè)IP地址同時(shí)連接服務(wù)器某一個(gè)目錄的并發(fā)連接數(shù),是一個(gè)非常有用的模塊,其官方網(wǎng)頁(yè)是https://dominia.org/djao/limitipconn.html,最新版本為for Apache 1.3.7的0.04,并且還有支持Apache 2.x的模塊下載,由于本人使用Apache 1.3.7版本,所以請(qǐng)使用2.x版本Apache的朋友到其官方網(wǎng)站察看具體的使用方法。

  mod_limitipconn for Apache 1.3x提供三種安裝方式,分別是tar包、rpm安裝文件和rpm源文件,由于rpm包只能用在 RedHat 7.x 版本,并且不支持檢測(cè)代理服務(wù)器,所以我們一般都使用tar包的安裝方式。

  以管理員方式登陸服務(wù)器,然后在服務(wù)器上運(yùn)行wget https://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz將mod_limitipconn的tar包下載到服務(wù)器,然后按照再運(yùn)行tar zxvf mod_limitipconn-0.04.tar.gz將tar包解壓縮,會(huì)在當(dāng)前目錄下生成mod_limitipconn-0.04目錄,然后cd mod_limitipconn-0.04進(jìn)入此目錄,下一步就是使用apxs將目錄中的mod_limitipconn.c編譯。這時(shí),我們需要確定自己的Apache安裝在那個(gè)目錄,并且找到apxs命令放在哪里。

  通過(guò)命令whereis apxs,我們可以確定apxs命令的路徑,如我的apxs命令所在為/usr/sbin/apxs,則輸入/usr/sbin/apxs -c -i -a mod_limitipconn.c對(duì)mod_limitipconn.c進(jìn)行編譯,此命令會(huì)自動(dòng)在你Apache的配置文件httpd.conf中加入需要的信息,并且將生成的mod_limitipconn.so模塊拷貝到Apache的模塊目錄。不過(guò)為了確認(rèn)此命令是否正常運(yùn)作,請(qǐng)首先檢查自己的Apache模塊目錄(我的是/usr/lib/apache),看內(nèi)部是否含有mod_limitipconn.so文件,沒(méi)有的話請(qǐng)將mod_limitipconn-0.04目錄中生成的文件拷貝到此處。

  剛才命令自動(dòng)生成的httpd.conf可能有些錯(cuò)誤,在我的系統(tǒng)中,它將LoadModule limitipconn_module modules/mod_limitipconn.so放在了

  <IFDEFINE HAVE_python>
  LoadModule python_module modules/mod_python.so
  </IFDEFINE>

之間,而將AddModule mod_limitipconn.c放在了

  <IFDEFINE HAVE_PYTHON>
  AddModule mod_python.c
  </IFDEFINE>

之間,直接造成了mod_limitipconn模塊不能正常運(yùn)行,所以請(qǐng)將這兩行分別移動(dòng)到?jīng)]有<IFDEFINE></IFDEFINE>的相應(yīng)行中,然后請(qǐng)確認(rèn)mod_status模塊已經(jīng)加載,并且在mod_status下添加了ExtendedStatus On這一行。這時(shí)我們的mod_limitipconn模塊就安裝完畢,下一步就是對(duì)某個(gè)目錄進(jìn)行并發(fā)連接數(shù)的設(shè)置了。

  mod_limitipconn可以對(duì)全局和虛擬主機(jī)進(jìn)行不同的限制,其語(yǔ)法結(jié)構(gòu)都是

  <IFMODULE mod_limitipconn.c>
    <LOCATION /> #所限制的目錄所在,此處表示主機(jī)的根目錄
      MaxConnPerIP 3 #所限制的每個(gè)IP并發(fā)連接數(shù)為3個(gè)
      NoIPLimit image/* #對(duì)圖片不做IP限制
    </LOCATION>
    <LOCATION mp3> #所限制的目錄所在,此處表示主機(jī)的/mp3目錄
      MaxConnPerIP 1 #所限制的每個(gè)IP并發(fā)連接數(shù)為1個(gè)
      OnlyIPLimit audio/mpeg video #該限制只對(duì)視頻和音頻格式的文件
    </LOCATION>
  </IFMODULE>

  當(dāng)對(duì)全局進(jìn)行限制時(shí),將這段代碼放在httpd.conf文件沒(méi)有VirtualHost的地方,若是對(duì)某個(gè)虛擬主機(jī)進(jìn)行限制,請(qǐng)將其放在<VIRTUALHOST xxx.xxx.xxx.xxx>和</VIRTUALHOST>之間,我們可以通過(guò)更改Location以及MaxConnPerIP方便的控制所限制的目錄和并發(fā)連接數(shù)。

  最后,只要重新啟動(dòng)Apache服務(wù),并發(fā)連接數(shù)的限制就可以生效。

二、使用mod_bandwidth控制Apache的帶寬

  Apache 1.3.7實(shí)際上帶有mod_bandwidth支持,只是沒(méi)有此模塊的so文件,我們所做的就是下載mod_bandwidth的源文件進(jìn)行編譯,并對(duì)mod_bandwidth進(jìn)行相應(yīng)的設(shè)置。

  在下載之前,請(qǐng)先確認(rèn)自己的Apache配置文件httpd.conf中是否含有

  <IFDEFINE HAVE_BANDWIDTH>
  LoadModule bandwidth_module modules/mod_bandwidth.so
  </IFDEFINE>

以及

  <IFDEFINE HAVE_BANDWIDTH>
  AddModule mod_bandwidth.c
  </IFDEFINE>

若是沒(méi)有,請(qǐng)加上

  LoadModule bandwidth_module modules/mod_bandwidth.so
  AddModule mod_bandwidth.c

并且這兩行必須分別加在相應(yīng)區(qū)域的最前面,使得這個(gè)模塊以最低的優(yōu)先級(jí)運(yùn)行。(不過(guò)1.3.7的Apache應(yīng)該有,呵呵)。

  確認(rèn)后,請(qǐng)輸入wget ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c將源文件下載到服務(wù)器,然后請(qǐng)使用apxs對(duì)其進(jìn)行編譯,編譯方法和mod_limitipconn的基本相同,如我輸入/usr/sbin/apxs -c mod_bandwidth.c -o /usr/lib/apache(Apache的模塊目錄),編譯程序會(huì)自動(dòng)將編譯成功的mod_bandwidth.so文件放到Apache的模塊目錄,您也可以自己確認(rèn)一下,若是不正常,拷貝過(guò)去即可。

  mod_bandwidth運(yùn)行時(shí)需要一些特定的目錄,按照默認(rèn)情況,請(qǐng)運(yùn)行以下命令創(chuàng)建并更改目錄的權(quán)限:

  mkdir /tmp/apachebw
  mkdir /tmp/apachebw/link
  mkdir /tmp/apachebw/master
  chmod -R 777 /tmp/apachebw

然后再打開(kāi)httpd.conf文件,加上以下內(nèi)容

  <IFMODULE mod_bandwidth.c>
    BandWidthDataDir "/tmp/apachebw/"
    BandWidthModule on
  </IFMODULE>

  這時(shí),我們就能夠?qū)λ枰拗茙挼哪夸涍M(jìn)行相應(yīng)的設(shè)置,此處的目錄請(qǐng)使用服務(wù)器的絕對(duì)路徑。如我們想限制服務(wù)器/home/www/softicp/download/soft目錄的下載速度,也就是限制網(wǎng)址https://download.softicp.com/soft目錄下軟件的下載速度,則為httpd.conf文件增加以下內(nèi)容

  <DIRECTORY soft download softicp www home>
   BandWidth cbifamily.com 0 #來(lái)自cbifamily.com的下載不受速度限制
   BandWidth 210.51.21 0 #來(lái)自210.51.21網(wǎng)段的下載不受速度限制
   BandWidth all 327680 #來(lái)自其它網(wǎng)段的速度都限制為327680Byte,即30KB/s
  </DIRECTORY>

設(shè)置完畢后,重新啟動(dòng)Apache服務(wù),即可生效。

  mod_bandwidth還有許多其它有用的參數(shù),如在<DIRECTORY></DIRECTORY>中間加上MaxConnection 120則可以限制某個(gè)目錄的最多連接數(shù),當(dāng)超過(guò)指定連接數(shù)時(shí),拒絕新的連接,此參數(shù)與mod_limitipconn模塊結(jié)合可以控制某個(gè)目錄的最多連接人數(shù)。

其它的參數(shù)請(qǐng)朋友們到其官方網(wǎng)站https://www.cohprog.com/v3/bandwidth/doc-en.html察看相關(guān)的文檔。

Apache的功能確實(shí)強(qiáng)大,很多功能都可以通過(guò)添加模塊來(lái)實(shí)現(xiàn),在https://modules.apache.org/可以找到更多的模塊,我們也可以編寫(xiě)自己的模塊來(lái)實(shí)現(xiàn)相應(yīng)的功能。

關(guān)鍵詞標(biāo)簽:帶寬,控制,連接,并發(fā),

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈IIS6.0下配置MySQL+PHP5+Zend+phpMyAdminIIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻win2000server IIS和tomcat5多站點(diǎn)配置win2000server IIS和tomcat5多站點(diǎn)配置

相關(guān)下載

人氣排行 XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法Server Application Unavailable的解決辦法如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù)報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)Windows Server 2003的Web接口