簡單講述Linux Apache系統應用操作管理

來源:互聯網
上載者:User

Linux Apache經過長時間的發展,很多使用者都很瞭解Linux Apache了,這裡我發表一下個人理解,和大家討論討論tux是一種有GPLGNU General Public License )許可的基於核心的Web伺服器。目前它還只能提供靜態網頁服務,只有和核心區模組,使用者區模組,以及一般的使用者區Web伺服器後台一起應用的時候才提供動態內容服務。

一般使用者區的Web伺服器不需要為了適應TUX而改變很多地方。然而,使用者區資料區段代碼必須要有一個通向TUX的系統調用的介面。
雖然動態內容服務現在增長的很迅速,但是也必須要提供靜態內容服務。如,所有的圖片檔案就都是靜態。TUX能給在Linux的核心裡提供非常高效率的靜態內容服務,就象在核心裡啟動並執行NFS網路檔案系統服務一樣。

TUX也有處理動態內容的功能。TUX模組用網頁緩衝儲存動態內容的對象。當一個動態請求到達的時候,一個TUX的模組就發送會一個聯合的動態請求並緩衝這個請求。這就是TUX的零拷貝緩衝校正的結構。建議TUX模組不許運行在使用者區,雖然他們也可以運行在核心區。)
這個新的動態內容的處理需要一個新的API介面。當前的CGI的API介面不能充分的用在TUX的API上。因此,當前的CGI程式為了使用TUX就要修改當前的程式。如果CGI程式不需要增加TUX的速度的話,TUX也可以把它安一般的CGI來處理。要實現這個功能就要用TUX的CGI模組。TUX也可以處理複雜的CGI或是其他的請求,這要通過它把請求重新導向到另外一個web伺服器背景程式,如Linux Apache。也就是說,靜態內容,TUX模組,老的CGI程式,以及為TUX Web伺服器編寫的特定的程式都可以在TUX這個主伺服器裡運行。

一句話,TUX和其他的Web伺服器的區別和TUX的好處包括:
TUX是作為Linux的核心2.4.x或更高的一部分來啟動並執行,另外一部分可以做為使用者區來運行。
TUX緩衝部分的TCP校正並用它們來加快網路資料轉送速度。
用一個特定的網路卡,TUX可以從頁面緩衝定向分散的DMA直接到網路,這樣就避免了資料的拷貝。
當TUX不知道如何去處理一個請求或是接受到一個請求不能去啟動並執行時候,它一般會把這個請求傳送到使用者區的Web伺服器後台去處理它。一個典型的使用者區Web伺服器就是Linux Apache。

TUX 2.0的新功能

TUX 2.0是從TUX 1.0升級成的,仍然保守著與使用者區模組的相容性。
增加的功能包括:
真正的零磁碟讀拷貝,TUX1.0是放到一個臨時的緩衝裡的。
產生網路寫的零拷貝。
零拷貝解析。
其他新功能:
提高使用者去功能模組的支援。
虛擬機器主機的支援,它不限制虛擬機器主機的數量。
CGI可以綁定到特定的進程
一些BUG的修複。

系統的基本需要

TUX需要基於2.4.x核心或是更高版本的系統。
基於X86的伺服器。
交替的Web伺服器如Linux Apache來處理不知道的請求
當前的限制:
核心模組只支援伺服器端。
TUX只在x86的Linux平台上測試過。
TUX能請求其他的Web伺服器如Linux Apache來處理請求。在當前的版本,它對復原不是處理的很好。lighttpd,thttpd,shttpd
國內絕大部分的web server不是IIS就是Apache,而論市場佔有率,我認為Linux Apache是大贏家了,至少是佔據了半壁江山。
但除了IIS/Apache外,其實我們有很多選擇,對於高負載/大並發的網站而言,高效能、輕量級的web server是一劑良藥。最近手頭一台Server 的負載太高,居然將swap吃光導致機器非常緩慢,後來一查,原來是Linux Apache耗掉了幾乎所有資源,當時apache進程已有9XX個了。
於是用輕量級的web server替換掉Linux Apache就進入了議程表。這裡順帶介紹一下這些可選的對象:

lighttpd

官方首頁:www.lighttpd.net
Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的web server環境。具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。
lighttpd是眾多OpenSource輕量級的web server中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Linux Apache之所以流行,很大程度也是因為功能豐富,在lighttpd上很多功能都有相應的實現了,這點對於apache的使用者是非常重要的,因為遷移到lighttpd就必須面對這些問題。
實用起來lighttpd確實非常不錯,上文提到的apache overload的問題,用lighttpd就完全解決了。apache主要的問題是密集並發下,不斷的fork()和切換,以及較高相對於lighttpd而言)的記憶體佔用,使系統的資源幾盡枯竭。而lighttpd採用了Multiplex技術,代碼經過最佳化,體積非常小,資源佔用很低,而且反應速度相當快。
利用apache的rewrite技術,將繁重的cgi/fastcgi任務交給lighttpd來完成,充分利用兩者的優點,現在那台伺服器的負載下降了一個數量級,而且反應速度也提高了一個甚至是2個數量級!

下面是他們官方網站上的一段話:
“lightTPD is the BEST webserver out there, much faster than apache and much much much more flexible/configurable/secure than tux, and its fcgi php support is simply unbeatable.”
thttpd
官方網站:http://www.acme.com/software/thttpd/
thttpd是一個非常小巧的輕量級web server,它非常非常簡單,僅僅提供了HTTP/1.1和簡單的CGI支援,在其官方網站上有一個與其他web server如Linux Apache, Zeus等)的對比圖+Benchmark,可以參考參考。此外,thttpd 也類似於lighttpd,對於並發請求不使用fork()來派生子進程處理,而是採用多工(Multiplex)技術來實現。因此效能很好。
Thttpd支援多種平台,如FreeBSD, SunOS, Solaris, BSD, Linux, OSF等。對於小型web server而言,速度快似乎是一個代名詞,通過官方站提供的Benchmark,可以這樣認為:thttpd至少和主流的web server一樣快,在高負載下更快,因為其資源佔用小的緣故。
Thttpd還有一個較為令人信服的特點:基於URL的檔案流量限制,這對於下載的流量控制而言是非常方便的。象Linux Apache就必須使用外掛程式實現,效率較thttpd低。
shttpd

官方網站:http://shttpd.sourceforge.net/ Shttpd是另一個輕量級的web server,具有比thttpd更豐富的功能特性,支援CGI, SSL, cookie, MD5認證, 還能嵌入(embedded)到現有的軟體裡。最有意思的是不需要設定檔!
由於shttpd可以嵌入其他軟體,因此可以非常容易的開發嵌入式系統的web server,官方網站上稱shttpd如果使用uclibc/dielibc(libc的簡化子集)則開銷將非常非常低。以下是其特點:
Stand-alone server, or embeddable into existing C/C++ program
GET, POST, PUT, DELETE methods
CGI
SSL
Digest (MD5) authorization
Multiple (and user defineable) index files
Directory listing
Standard logging
Cookies
inetd mode
User-defineable mime types
No configuration files
No external dependencies
由於shttpd可以輕鬆嵌入其他程式裡,因此shttpd是較為理想的web server開發原形,開發人員可以基於shttpd開發出自己的webserver!

下面是我翻譯的LiteSpeed Web Server官方的一篇文章。
圖片請參見……
http://www.litespeedtech.com/benchmark.html
幾種web server表現的對比:
被測試的web server 軟體
測試環境
測試結果
以小的靜態檔案為測試基準
以CGI為基準
以FAST CGI為基準
以PHP指令碼為基準:mod_php vs. FastCGI PHP
以Perl指令碼為基準:mod_perl vs. lsperld結論。

被測試的web server 軟體

下面幾種web server都包含在這次測試中。
Linux Apache 1.3.33
Linux Apache 2.0.52 (prefork mpm)
IIS 6.0
LiteSpeed 2.0 Standard
LiteSpeed 2.0 Professional
thttpd 2.25b
TUX 3.2
boa 0.94.14rc20
lighttpd 1.3.12
Aolserver 4.0.7
Mathopd 1.5p3
說明一下LSWS 是LiteSpeed Web Server的縮寫。
本來也很想把zeus和 sunone也放到這次基準測試中來,但是那些軟體的聲明不允許對對它們的測試結果進行公布。
測試環境
Network Switch: D-Link Gigabit Eight Ports Switch DGS-1008D
Server Hardware: Dell PowerEdge SC1600
CPU: Single Intel Xeon 2.4GHz/533FSB/512KB L2 Cache
memory: 256MB ECC PC2700
Hard Drive: 36GB 10K RPM SCSI drive Seagate ST336607LW
NIC: on board Intel PRO/1000 Gigabit Adapter
Server Software:
Fedora Core 3 with stock kernel 2.6.10-1.760
IIS 6.0 on Windows 2003 Enterprise
Web Server Configurations:
Linux Apache 1.3.33
Linux Apache 2.0.52
IIS 6.0 - default
LiteSpeed 2.0 Standard - default
LiteSpeed 2.0 Professional - default
thttpd
TUX 3.2 - default
boa
lighttpd
Aolserver
Mathopd

如果想知道他們當時的具體配置可以去原文中查看,Web Server Configurations: http://www.litespeedtech.com/benchmark.html。
注意:LiteSpeed 和 lighttpd都支援在2.6核心中新的i/o 事件發送器sys_epoll()。但是有意思的是。我們發現這兩種server基準測試的結果還沒以前的標準時間發送器poll(),表現的好。
至少當我們通過網路測試並發等級< =1000的時候,我們僅僅用poll()來做我們所有的測試。
結果可能會和在本地機上通過迴路測試完全不同。
Client Hardware: MSI K7D
CPU: Dual Athlon MP 2000+/266FSB/256KB L2 Cache
memory: 1GB PC2100
Hard Drive: 36GB 1000RPM SCSI drive
NIC: Intel PRO/1000 Gigabit Adapater
Client Software:
OS: RedHat 8.0 with kernel 2.4.22smp
Test Tool: ApacheBench (ab) 1.3.33
測試結果:
每種情況運行3次,最好的結果被採納。伺服器被重新啟動,當每次測試完一種web server軟體。
以小的靜態檔案為測試基準
小的靜態頁面大小隻有100 bytes。用小檔案測試的原因是為了避免網路頻寬瓶頸。我們只為了展示web server的表現,而不是核心。
Non-KeepAlive test: ab -n 100000 -c : /100.html”>http://: /100.html

CGI 基準測試

一個簡單的c cgi指令碼(echo)被用來在這裡測試。它是C CGI/FCGI在fcgi 2.4包中 的例子。用來列印出所有的cgi環境變數。
CGI Test: ab -n 3000 -c : /cgi-bin/echo”>http://: /cgi-bin/echoPHP指令碼基準測試: mod_php vs. FastCGI PHP
兩個簡單的php指令碼被用來測試。一個是hello.php只輸出hello world。另一個是phpinfo.php,只調用phpinfo()。這裡都沒有配置作業碼加速器opcode accelerator)。因為他們對這兩個簡單的php指令碼沒有太大的影響。
hello.php test: ab -n 10000 -c : /phpinfo.php”>http://: /phpinfo.php

Perl 指令碼基準測試: mod_perl vs. lsperld
一個Hello World perl指令碼,產生一個77 bytes的響應體。被用來測試。
Linux Apache 2.0沒有測。因為在同一個伺服器上既為 1.3又為2.0安裝mod_perl太麻煩了。
Linux Apache 1.3 被配置成用 Apache::Registry去處理perl 指令碼.
Lsperld 是一個Perl Fast CGI 指令碼它可以運行CGI perl 指令碼在一個 persistent Perl interpreter中, 就像 Apache mod_perl’s Apache::Registry, 編譯perl 指令碼,cached 到記憶體中。
hello.pl test: AB -n 10000 -c http://www.litespeedtech.com/
LiteSpeed web server is an Apache interchangeable, full-featured high performance, secure HTTP server specifically engineered from the ground up with security and scalability in mind.
lighttpd,thttpd,shttpd的穩定性還沒有一個肯定的說法。
以後再對這個文檔進行補充。翻譯的不正確的地方歡迎指出,可以參看原文。

  1. 分析Linux Apache為何訪問過慢
  2. Linux Apache伺服器系統的設定與最佳化
  3. Ubuntu Linux Apache虛擬機器主機的安裝配置
  4. 簡要介紹Linux shell命令的收集程式設計語言
  5. 講述Linux系統掛載分區的使用

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.