提高Apache服務器性能的四個建議
Apache服務器是在Linux系統上部署HTTP服務器的一個最佳選擇。不僅僅因為其穩定、安全,而且其還能夠提供比較優越的性能。不過為了提高 Apache服務器的性能,Linux系統管理員還是需要調整一些跟性能相關的參數,在Apache服務器中專門有一個模塊用來進行相關的調整。作為系統管理員,在部署Apache服務器應用的時候,需要了解這些參數的含義,并根據網站應用的實際情況來進行相關的調整。要實現這個目的,筆者下面的幾條建議或許能夠對大家有所幫助。
建議一:設置最多連接數量。
為了保障每個連接的客戶端的性能,往往需要在服務器中設置在同一時間內允許的客戶端數量的上限。如在服務器上部署了電子郵件或者FTP等應用服務,為了能夠保障下載的速度,就需要對連接客戶端進行最高數量的限制。在Apache服務器中有一個“最多連接數量”的欄目,就是用來設置這個值。另外也可以利用配置文件中的MaxClinets參數來進行設置。通過這個參數,系統管理員可以限制客戶端的連接數量與連接時間,以節省帶寬來提供其他的服務或者提高已有連接的效率。當客戶端的連接數量超過這個最高限制后,所有新建的連接都會被拒絕;當然服務器會把拒絕錯誤信息返回給客戶。
在進行這個設置的時候,需要注意兩個問題。一是在Linux操作系統上配置Xinetd服務的時候也可以進行類似的設置。如通過配置 Xinetd服務配置文件中的instances參數可以設置單一服務在同一時間內提供客戶端連接請求的最高上限。那么這個參數跟Apache服務器中的連接數量設置是什么關系呢?如instance參數設置為100;而MaxClints參數設置為120。那么最終可以連接到Apache服務器上的客戶端數量為多少呢?注意,由于客戶端的互聯網連接請求是先通過Linux操作系統的,所以在Linux操作系統上的配置往往具有比較高的優先性。為此,當 instance參數小于MaxClints參數時,以前者為準;當instance參數大于MaxClints參數時,以后者為準。故有時候客戶端提示連接數量超過上限時,系統管理員往往需要同時檢查這兩個參數,才能夠發現問題的真正原因。二是需要考慮在什么情況下需要啟用這個限制。一般來說,如果 HTTP服務器上的應用主要是在企業內部網絡中應用,由于帶寬比較理想,為此不需要設置這個限制。但是如果是面向互聯網用戶的,則往往需要設置這個限制。如企業部署了一個FTP服務器,供互聯網的用戶下載。由于其帶寬是固定的,當下載的用戶越多,其能夠得到的下載速度也就越低。為此為了給已有連接的用戶提供一個比較好的速率,往往就需要設置一個最多連接數。以免連接用戶過多而影響下載的速率。
建議二:允許每次連接可有無限制請求。
如果是在Solaris Linux上部署Apache服務器的話,最好對這個參數進行設置。這個選項表示當客戶端與服務器建立連接后,每個子進程在結束前所能接受的客戶端請求上限。當達到這個上限值之后,這個子進程就會中斷。這主要是為了避免某些子進程占用過多的服務器資源而導致服務器性能的下降!霸O置最多的連接數量”選項主要用來限制客戶端的連接數量;而每個客戶端在同服務器進行連接的時候可以采用多個子進程與服務器進行連接。如FTP連接一個客戶端默認情況下可以采用5個子進程進行連接。而這個客戶端下載的總速率就是5個子進程的總合。故在部署Apache服務器的時候,就需要對這個選項進行限制。防止同一個客戶端開啟了比較多的進程,占用了大量的服務器硬件資源。
不過需要注意的是,這個參數跟另外一個參數keepalive很相似,但是兩者有很大的區別。KeepAlive顧名思義,主要是用來保證客戶端與服務器之間的一個持續連接。如果Apache服務器主要用來做視頻會議或者提供在線觀看電影的話,則這個參數就很有價值。此時如果把這個參數設置為 OFF的話,則客戶端瀏覽器可能必須在包含多重組件的網頁中,建立許多連接請求。并且在連接的過程中,每個組件都必須進行單獨的連接。而這些額外的請求與連接惠增加服務器的負擔及網絡帶寬的損耗。
在日常的配置中,往往是這個配置選項同時使用。如往往同時啟用“允許每次連接可有無限制請求”與KeepAlive選項,并設置可以連接的最大進程數。如此的話,即可以避免因為連接數過多而給服務器帶來負擔;同時又不會影響多次頻繁的連接請求而給服務器帶來的額外負擔。
建議三:合理配置超時時間。
這個選項是指客戶端提出連接請求并建立起連接后,最大的空閑時間。如果超過這個時間,客戶端與服務器之間仍然沒有進行任何的接收或者發送信息的動作,則就會中斷這個連接。其實這個選項對于訪問者來說是一把雙刃劍。一方面限制無用的連接時間(客戶端連接上服務器而沒有進行任何的請求動作)可以減少帶寬的浪費,可以保障其他訪者著的帶寬;但是另一方面這也比較容易引起客戶端使用上的不方便。如訪者者可能臨時有事走開一會兒(如上了一趟廁所)客戶端與服務器端的連接就會中斷?蛻舳诵枰匦逻B接服務器,從而需要進行新一輪的連接請求、身份認證等等,這也會耗用服務器的資源與帶寬。所以說,這個超時時間對于雙方來說,都是有利又有弊。故系統管理員在配置這個選項的時候,需要進行評估,確定是否需要設置這個選項,并為此確定一個合理的超時時間。
一般來說,如果設置了最大客戶端連接數量的話,則最好同時配置這個超時時間。如服務器設置了最大的客戶端連接數量為100個,而現在已經有 100個客戶端連接在Apache服務器上了。但是其中有20個客戶端已經1個小時沒有動作了。很有可能是其去吃飯或者其他原因忘記關閉網頁,而沒有中斷與服務器的連接。此時這20個客戶端的連接其實一種兩費。此時如果設置了這個超時時間的話,如超過10分鐘沒有任何數據傳送動作的話就自動關閉這個客戶端的連接。很明顯這可以提高這個連接點數的利用效率。
另外在Apache服務器配置文件中,有一個KeepAliveTimeout參數,跟這個超時時間比較相似。這個參數主要用來設置客戶端與服務器建立連接后,客戶端提出兩個請求之間的時間間隔。如果超過一定的時間間隔,客戶端并沒有再提出另外一個請求,則這個連接聲明即中斷?梢娺@個連個選項的功能很類似,不過其中有一個很重要的區別。因為在客戶端與服務器連接的時候大致分為兩個階段。第一個階段為客戶端提出連接但是服務器還沒有響應;第二個階段為客戶端與服務器之間已經建立連接。前面這個參數的話適用這兩個階段中的任何一個階段。而后面這個參數則只適合第二個階段,即連接后的控制。在其他方面基本上沒有區別。故在大部分情況下,這兩個選項可以通用?傊,是否需要采用這個選項需要根據服務器的應用情況來定。作為系統管理員,需要在服務器性能與用戶便利性之間取得一種平衡。這種平衡往往很難實現。需要系統管理員進行多次的測試、調整、用戶意見反饋,最終才能夠得到一個合理的答案。
建議四:慎用允許持久性連接。
在服務器性能調整選項卡中,有“允許持久性連接”這項內容。如果選中這項內容的話,就表示客戶端與服務器之間的連接永遠有效,除非客戶端手工中斷與服務器之間的連接(如關閉網頁或者重新啟動客戶端)。如果把配置文件中的KeepAliveTimeout參數設置為Ture,也可以起到類似的效果。對于這個選項來說,系統管理員需要慎用。因為根據經驗,一般用戶不會主動去關閉網頁。也就是說,不會主動去中斷客戶端與服務器端之間的連接。他們很可能會在用完電腦需要關機的時候才會中斷這個連接。此時在服務器端雖然有很多客戶端的連接數量,但是有不少可能都是“死連接”,在很長的一段時間內不會有數據的傳送動作。這對于服務器來說,是一種性能上的浪費。為此筆者的意見是,寧可把用戶與服務器之間的空閑時間設置的長一點,如2個小時甚至更久,也盡量不要采用持久性連接。
關鍵字:Apache、服務器、Linux
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解