配置Apache 1.3或者Apache 2.0伺服器的5個技巧

來源:互聯網
上載者:User
本文提出了配置Apache 1.3或者Apache 2.0伺服器的5個技巧。我們將闡述以下的配置方案:調整Apache的 accept()序列化、Apache 2.0線程、採用 mod_ssl的SSL會話緩衝、最佳化keep-alive逾時值以及檢查伺服器負載以平衡伺服器可處理的請求量等。
AcceptMutex

Apache 1.3.21和Apache 2.0中引入了AcceptMutex 指示符,該指示符給調節伺服器的效能帶來了一個難得的機會。該指示符配置Apache的accept()處理方式。在某些只有一個接聽程式的系統上是不需要接受阻塞的。這就叫Single Listen Unserialized Accept (SLUA)。可是,對那些具有多個接聽程式的配置或者在接受系統調用函數上(不管有多少個接聽程式)存在thundering herd問題的作業系統上,串連接受程式就必須進行序列化了。

Covalent的Sander Temme對accept()阻塞策略進行了一定程度的效能分析。這份報告總結了Apache 1.3.21在這一方面的有關調整策略,如下所示:

  • Irix的uslock (uslock)
  • POSIX跨進程阻塞 (pthread)
  • SystemV Semaphores (sysvsem)
  • fcntl()阻塞(fcntl)
  • flock()阻塞 (flock)
  • OS/2 Semaphores (os2sem)
  • TPF 阻塞 (tpfcore)
  • None(無)

儘管採用AcceptMutex none也是可能的,但是你的系統在這種配置下有可能受到thundering herd問題和死結的困擾。這些問題會導致伺服器減慢處理速度乃至停止回應。none選項絕對不能用在實際系統上。在非正式的測試下,pthread鎖應該是最好的解決方案。然而,pthread跨進程阻塞並不是所有系統都可用的。

採用2.0版和線程(worker MPM)

Apache 2.0有一個顯著的改進特性就是支援線程。某些作業系統,比如Solaris,在採取線程技術的條件下可以顯著地改進系統效能。而其他動作系統,比如Linux,其效能改進就可能並不是很顯著。

在採用Apache 2.0的情況下,處理請求的策略已經理論化了,這就是所謂的MPM:多進程模式(Multi Process Model)。而老一些的Apache 1.3模式則以prefork MPM為代表,在Unix平台上就是預設MPM for 2.0 。在這種模式下有一個獨立的進程處理每一請求。可是,假如你編譯Apache 2.0的時候帶 --with-mpm=worker 選項,那麼伺服器請求就會由線程來處理。這種方法在精心設計線程實現方案的情況下會大大降低作業系統處理請求的負載。

SSL會話緩衝

如果你對Apache 1.3或者在Apache 2.0採用了mod_ssl補充外掛程式(在在Apache 2.0中則已經包含在內),那麼你可以採用會話緩衝提升系統效能。這種改進會顯著降低SSL串連負載。設定會話緩衝有三種途徑:

  • DBM (dbm),這是一種在磁碟上儲存項目的常用格式(htpasswd可以DBM格式儲存密碼)
  • 共用記憶體迴圈緩衝(shm 或者shmcb)
  • 共用記憶體哈系表(shmht)

在採用以上選項的時候需要指定檔案路徑。在使用DBM變數的情況下,檔案將被寫入磁碟。而對共用記憶體變數來說,檔案將被用做作業系統優選共用記憶體機制的儲存備份。值得注意的是,大多數作業系統不允許共用記憶體段建立在通過網路裝載(mount)的磁碟機上,比如NFS等,所以必須給伺服器提供檔案路徑。

我們建議你採用共用記憶體,不過,在那些沒有共用記憶體的平台上則不妨採用DBM方案。

SSL會話緩衝的更多資訊和有關文法請見:
  • modssl.org
  • Apache.org
KeepAliveTimeout

假設某位使用者在閱讀網站上的某一網頁,然後它單擊某一導向站內另一網頁的連結。假如這一過程發生在KeepAliveTimeout 周期之內(預設為15秒),那麼就不必建立新的TCP伺服器串連。這樣做大大減少了電腦的負載。然而,在這一時間地區內伺服器也不能處理更多的請求。KeepAliveTimeout周期過後,伺服器才可以處理來自不同客戶機的最新請求。因此,你必須增加請求進程或者線程的數量以滿足空閑請求的需要。這個值應該進行仔細的調整以達到最佳狀態。

採用mod_status

採用mod_status檢查伺服器負載情況可以從中獲得調整伺服器效能的重要訊息。

apachectl status命令是檢查伺服器狀態的快捷途徑。假如該命令的輸出結果並沒有始終如一的顯示出可用的背景工作處理序。那麼最好增大MinSpareServers或者MinSpareThreads值(在Apache 2.0採用線程化MPM的情況下)。同時你可能還需要增大MaxClients值。

有關mod_status和Apache模組mpm_common的更多資訊請參考 mod_statusmpm_common
小結

你完全可以採用本文提出的技巧使伺服器的效能最大化同時維持網站的正常運行。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。