Apache是把正確性放在首位、把速度放在其次的通用Web服務器。即使這樣,它的性能十分令人滿意。 許多站點只有不到10M的出口帶寬。Apache能夠在這些站點的低端Pentium服務器上全速工作。實際上, 擁有更多帶寬的站點出於一些原因(比如大量的CGI和數據庫事務處理)需要用一台以上的機器滿足帶 寬需求。這些原因導致了以往的Apache開發工作集中在正確性和可配置性。 不幸的是許多人過於重視某些指標,並把它們的原始數據當作評價Web服務器優劣的標准。被普遍接受 標准的是“原始最低性能(bare minimum performance)”,而在這以外的其他速度指標只適用於很 小部分的市場需求。但為了避免Apache在一些市場中受到排擠,我們在Apache1.3上盡了相當的努力, 將它與高端服務器的差距減至最小。 另有一些人只是想試試這些東東能運行得多快。這些人竭力把Apache最後一滴性能擠出來,他們也想看 看究竟是什麼影響了Apache的性能。這篇文章的其余部分就是針對他們而撰的。 請注意本文適用於Unix上的Apache1.3,部分內容適用於NT平台。目前的Apache尚未在NT上進行優化。 事實上,不同的編程模型使它在NT上的性能表現相當不好。(即POSIX模型。NT借助POSIX子系統模擬 這種編程標准,因此效率很低。Apache2.0拋棄了POSIX直接與操作系統打交道, 性能將有所飛躍——譯者注) 關於硬件平台和操作系統 最直接影響Web服務器性能的硬件要數RAM。一台Web服務器從不應該訪問內存交換區。交換增加了每次 請求的延時,用戶將因此認為“不夠快”。他們會點擊[停止]並重新裝載網頁,這將進一步增加服務器 的負擔。您能夠也有必要調節MaxClients,使您的服務器不會衍生太多的子進程而導致交換。 除此之外的事情就沒那麼關鍵了。擁有快速的CPU、快速的網卡和硬盤都可以讓您的服務器“足夠快”。 其實這足夠快個詞是需要憑經驗去體會的。 操作系統的選用也是值得斟酌的大問題。普遍的准則是:及時得到操作系統提供商的最新TCP/IP補丁。 迅速湧現的HTTP服務打破了截止到1994年乃至95年的Unix內核中設定的許多假設情況。理想的選擇包括 目前的FreeBSD和Linux。 關於運行時設置(Run-Time Configuration) HostnameLookups 1.3版以前的Apache中,HostnameLookups的缺省值是On,這將導致每次請求時服務器都要進行NDS查詢, 從而增加了延遲。Apache1.3將此缺省值設為Off。在1.3及以後的版本中,如果您使用了任何 allow from domain或deny from domain命令,所付出的代價將是兩次DNS查詢帶來的延時(在一次逆向 查詢後跟著一次正向查詢,以保證前者得到的結果是真實的)。因此為了得到最理想的性能應避免使用 HostnameLookups(使用IP地址而非域名也是個好主意)。 限制命令的使用范圍是可行的,比如使用類似的容器。這種情況下,DNS查 詢只發生在符合條件的請求中。下面的例子使查詢只發生在.Html和.cgi文件的請求中: HostnameLookups off