當前位置:編程學習大全網 - 源碼下載 - linux apache 性能調優 8G 8核 的服務器

linux apache 性能調優 8G 8核 的服務器

[檢測工具]

為了得到完整的調試結果,建議妳采用 ApacheBench 或者 httperf之類的軟件。如果妳對非 LAMP 架構的服務器測試有興趣的話,建議妳采用微軟的免費軟件: Web Application Stress Tool(需要 NT 或者 2000)。 (其它服務器測試工具)

檢測 Apache ,采用 top d 1 顯示所有進程的 CPU 和內存情況。另外,還采用 apachectl status 命令

[硬件優化]

1、升級硬件的壹般規則:對於 PHP 腳本而言,主要的瓶頸是 CPU ,對於靜態頁面而言,瓶頸是內存和網絡。壹臺 400 Mhz 的普通奔騰機器所下載的靜態頁面就能讓 T3 專線(45Mbps)飽和。

2、采用 hdparm 來優化磁盤,壹般能提升 IDE 磁盤讀寫性能 200%,但是對 SCSI 硬盤也有效果。(不同類型的硬盤對比)

[策略優化]

3、Apache 處理 PHP 腳本的速度要比靜態頁面慢 2-10 倍,因此盡量采用多的靜態頁面,少的腳本。

4、PHP 腳本如果不做緩沖,每次調用都需要編譯,因此,安裝壹個 PHP 緩沖產品能提升 25-100% 的性能。

5、如果妳采用了 Linux 系統,建議升級內核到 2.4,因為靜態頁面由內核服務。

6、另外壹項緩沖技術是把不常修改的 PHP 頁面采用 HTML 緩沖輸出。

7、不要在 Web 服務器上運行 X-Windows ,關掉沒有必要運行的進程。

8、如果能夠用文本就不要用圖像,盡量減小圖片的尺寸。

9、分散負載,把數據庫服務器放到另外的機器上去。采用另外低端的機器服務圖片和 HTML 頁面,如果所有的靜態頁面在另外壹臺服務器上處理,可以設置 httpd.conf 中的 KeepAlives 為 off ,來減少斷開連接的時間。

10、以上所有的方法都是針對單機而言的,如果妳覺得系統還是不夠快,可以采用集群,負載均衡,緩沖技術。采用 Squid 作為緩沖,配置 Squid 的方法。

[編譯優化]

11、把基於文件的會話切換到基於***享內存的會話。編譯 PHP 時采用 --with-mm 選項,在 php.ini 中設置 set session.save_handler=mm 。這個簡單的修改能讓會話管理時間縮短壹半。

12、采用最新版本的 Apache ,並把 PHP 編譯其中,或者采用 DSO 模式,不要采用 CGI 方式。

13、編譯 PHP 時,建議采用如下的參數:

--enable-inline-optimization --disable-debug

[配置優化]

14、修改 httpd.conf :?

# 關閉 DNS lookups,PHP 腳本只拿 IP 地址

HostnameLookups off

15、如果網絡擁擠,CPU 資源不夠用,采用 PHP 的 HTML 壓縮功能:

output_handler = ob_gzhandler

PHP 4.0.4 的用戶請不要使用,因為存在內存泄漏問題。

16、修改 httpd.conf 中的 SendBufferSize 為妳最大的頁面文件的大小。加大內核的 TCP/IP 寫緩沖大小。

17、采用數據庫的持久連接時,不要把 MaxRequestsPerChild 設置得太大。

[第三方軟件優化]

18、如果喜歡從修改 Apache 源碼入手,可以安裝 lingerd。在頁面產生和發送後,每個 Apache 進程都會浪費壹段時光在客戶連接上,Lingerd 能接管這項工作,讓 Apache 迅速服務下壹個客戶請求。

19、如果妳足夠勇敢的話,還可以采用 Silicon Graphics 的 Accelerated Apache 補丁。這個工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。

安裝壹個 PHP 緩沖產品能提升 25-100% 的性能。

[Linux系統優化]

1.清理服務器磁盤碎片:

不論Linux文件系統采用什麽文件格式(ext3、JFS、XFS、ReiserFS )、何種類型的硬盤(IDE 、SCSI),隨著時間的推移文件系統都會趨向於碎片化。ext3、JFS等高級文件系統可以減少文件系統的碎片化,但是並沒有消除。在繁忙的數據庫服務器中,隨著時間的過去,文件碎片化將降低硬盤性能,硬盤性能從硬盤讀出或寫入數據時才能註意到。時間長了會發現每個磁盤上確實積累了非常多的垃圾文件,釋放磁盤空間可以幫助系統更好地工作。Linux最好的整理磁盤碎片的方法是做壹個完全的備份,重新格式化分區,然後從備份恢復文件。但是對於7×24小時工作關鍵任務服務器來說是比較困難的。Kleandisk是壹個高效的磁盤清理工具,它能把磁盤上的文件分成不同的"組",比如把所有的"core"文件歸成壹組(Group),這樣要刪除所有core文件時只要刪除這個組就行了。core文件是當軟件運行出錯時產生的文件,它對於軟件開發人員比較有用,對於其他用戶(比如電子郵件服務器)卻沒有任何意義。因此,如果沒有軟件開發的需要,見到core文件就可以將其刪除。

2、開啟硬盤DMA

現在使用的IDE硬盤基本支持DMA66/100/133(直接內存讀取)但是Linux發行版本安裝後壹般沒有打開,可以 /etc/rc.d/rc.local 最後面加上壹行: /sbin/hdparm -d1 –x66 -c3 -m16 /dev/hda 這樣以後每次開機,硬盤的 DMA 就會開啟,不必每次手動設定。添加前後妳可以使用命令:hdparm -Tt /dev/hda 來測試對比壹下。

3、調整緩沖區刷新參數

Linux內核中,包含了壹些對於系統運行態的可設置參數。緩沖刷新的參數可以通過調整 /proc/sys/vm/bdflush文件來完成,這個文件的格式是這樣的:

每壹欄是壹個參數,其中最重要的是前面幾個參數。第壹個數字是在"dirty"緩沖區達到多少的時候強制喚醒bdflush進程刷新硬盤,第二個數字是每次讓bdflush進程刷新多少個dirty塊。所謂dirty塊是必須寫到磁盤中的緩存塊。接下來的參數是每次允許bd flush將多少個內存塊排入空閑的緩沖塊列表。 以上值為RHEL 4.0中的缺省值。可以使用兩種方法修改:

(1)使用命令

# echo "100 128 128 512 5000 3000 60 0 0">/proc/sys/vm/bdflush

並將這條命令加到/etc/rc.d/rc.local文件中去。

(2)在/etc/sysctl.conf 文件中加入如下行:

以上的設置加大了緩沖區大小,降低了bdflush被啟動的頻度,VFS的緩沖刷新機制是Linux文件系統高效的原因之壹。

4、優化輸入輸出

I/O程序對Linux系統性能也是相當重要的,網絡硬件I/O對服務器尤其重要。現在大多數Linux服務器使用10/100 Mb以太網。如果有較重的網絡負載,則可以考慮千兆以太網卡。如果沒有能力購買千兆網卡的話:可以使用多塊網卡虛擬成為壹塊網卡,具有相同的IP地址。這項技術,在Linux中,這種技術稱為Bonding。Bonding在Linux2.4以上內核中已經包含了,只需要在編譯的時候把網絡設備選項中的 Bonding driver support選中見圖1。當然利用Bonding技術配置雙網卡綁定的前提條件是兩塊網卡芯片組型號相同,並且都具備獨立的BIOS芯片。

然後,重新編譯核心,重新起動計算機,執行如下命令:

現在兩塊網卡已經象壹塊壹樣工作了。這樣可以提高集群節點間的數據傳輸.bonding對於服務器來是個比較好的選擇,在沒有千兆網卡時,用兩塊100兆網卡作bonding,可大大提高服務器到交換機之間的帶寬.但是需要在交換機上設置連接bonding網卡的兩個子口映射為同壹個虛擬接口。編輯 /etc/modules.conf文件,加入如下內容,以使系統在啟動時加載Bonding模塊。

“mode”的值表示工作模式,***有0、1、2和3四種模式,這裏設定為0。Bonding工作在負載均衡(Load Balancing (round-robin))方式下,即兩塊網卡同時工作,這時理論上Bonding能提供兩倍的帶寬。Bonding運行在網卡的混雜(Promisc)模式下,而且它將兩塊網卡的MAC地址修改為壹樣的。混雜模式就是網卡不再只接收目的硬件地址是自身MAC地址的數據幀,而是可以接收網絡上所有的幀。

5、減少虛擬終端機的數量。

Linux安裝後系統默認是6個虛擬終端機,也就是 CTRL+ALT F1~F6 那六個,作為服務器使用可以關掉其中四個,只留下 CTRL+ALT F1~F2,大約省下 4 Mbytes 的內存,但是這樣壹來,X-Window 會從原來的 CTRL+ALT F7 變成 CTRL+ALT F3 。 修改 /etc/inittab 中,將 mingetty 3 ~6 全部加上 # 字號 。

6. 關閉壹些不用的服務

Linux服務器在啟動時需要啟動很多系統服務,它們向本地和網絡用戶提供了Linux的系統功能接口,直接面向應用程序和用戶。提供這些服務的程序是由運行在後臺的守護進程(daemons)來執行的。守護進程是生存期長的壹種進程。它們獨立於控制終端並且周期性的執行某種任務或等待處理某些發生的事件。他們常常在系統引導裝入時啟動,在系統關閉時終止。linux系統有很多守護進程,大多數服務器都是用守護進程實現的。如Web服務http等。同時,守護進程完成許多系統任務,比如,作業規劃進程crond、打印進程lqd等。

  • 上一篇:在vb2008中設計壹個每0.1秒更新壹次時間的秒表。
  • 下一篇:雙子K線是什麽?其K線圖分析
  • copyright 2024編程學習大全網