1、升級硬件的一般規則:對於 PHP 腳本而言,主要的瓶頸是 CPU ,對於靜態頁面而言,瓶頸是內存和網絡。一台 400 Mhz 的普通奔騰機器所下載的靜態頁面就能讓 T3 專線(45Mbps)飽和。
2、Apache 處理 PHP 腳本的速度要比靜態頁面慢 2-10 倍,因此盡量采用多的靜態頁面,少的腳本。
3、PHP 腳本如果不做緩沖,每次調用都需要編譯,因此,安裝一個 PHP 緩沖產品能提升 25-100% 的性能。
4、把基於文件的會話切換到基於共享內存的會話。編譯 PHP 時采用 --with-mm 選項,在 php.ini 中設置 setsession.save_handler=mm 。這個簡單的修改能讓會話管理時間縮短一半。
5、另外一項緩沖技術是把不常修改的 PHP 頁面采用 HTML 緩沖輸出。
6、如果你采用了 Linux 系統,建議升級內核到 2.6.0以上(現在最新版本為2.6.10)並開啟搶占式內核支持,因為靜態頁面由內核服務。
7、采用最新版本的 Apache ,並把 PHP 編譯其中,或者采用 DSO 模式,盡量不要采用 CGI 方式。
8、采用輸出緩沖(請參考ob_start),如果你的代碼有很多的 print 和 echo 語句,能提速 5-15% 。
9、不要在 Web 服務器上運行 X-Windows ,關掉沒有必要運行的進程,如果已經安裝了X-windows,請使用 init 3退出。
10、如果能夠用文本就不要用圖像,盡量減小圖片的尺寸。
11、分散負載,把數據庫服務器放到另外的機器上去。采用另外低端的機器服務圖片和 HTML 頁面,如果所有的靜態頁面在另外一台服務器上處理,可以設置 httpd.conf 中的 KeepAlives 為 off ,來減少斷開連接的時間。
12、采用 hdparm 來優化磁盤,一般能提升 IDE 磁盤讀寫性能 200%,但是對 SCSI 硬盤沒有效果。
13、修改 httpd.conf :
# 關閉 DNS lookups,PHP 腳本只拿 IP 地址
HostnameLookups off
# 關閉 htaccess 檢測
AllowOverride none
打開 FollowSymLinks ,關閉 SymLinksIfOwnerMatch 以防 lstat() 系統調用:
Options FollowSymLinks
#Options SymLinksIfOwnerMatch
下面還有很多關於 httpd.conf 參數的調整。
14、Kurt 簡潔而完整的 Apache Tuning Tips。
15、如果喜歡從修改 Apache 源碼入手,可以安裝 lingerd。在頁面產生和發送后,每個 Apache 進程都會浪費一段時光在客戶連接上,Lingerd 能接管這項工作,讓 Apache 迅速服務下一個客戶請求。
16、如果網絡擁擠,CPU 資源不夠用,采用 PHP 的 HTML 壓縮功能:
output_handler = ob_gzhandler
PHP 4.0.4 及以前的用戶請不要使用,因為存在內存泄漏問題。
17、修改 httpd.conf 中的 SendBufferSize 為你最大的頁面文件的大小。加大內核的 TCP/IP 寫緩沖大小。
18、另外一篇文章:Tuning Apache Web Servers for Speed,一篇 97 年的很古老的文章。
19、采用數據庫的持久連接時,不要把 MaxRequestsPerChild 設置得太大。
20、Caching Tutorial for Web Authors and Webmasters 教你怎樣實現瀏覽器緩沖。
21、如果你足夠勇敢的話,還可以采用 Silicon Graphics 的 Accelerated Apache 補丁。這個工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。
22、來自Professional Apache的技巧。
23、官方的Performance Tuning 文檔,很好的資料,但是十分繁瑣。
24、編譯 PHP 時,建議采用如下的參數:
--enable-inline-optimization --disable-debug
25、安裝mod_gzip(apache1.3)或者mod_deflate(apache2.0)等頁面壓縮軟件減輕服務器擁堵。同時盡可能優化你的HTML文件和PHP文件。
26、優化 Linux ,more Linux 以及Solaris。
27、如果系統瓶頸在MYSQL的數據操作上,可以考慮將Mysql拆分成多個端口甚至多個服務器並適當優化my.cnf ,這比使用單個端口速度提高不少。
26、以上所有的方法都是針對單機而言的,如果你覺得系統還是不夠快,可以采用集群,負載均衡,緩沖技術。采用 Squid 作為緩沖,配置 Squid 的方法。
