Apache性能優化 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
http://blog.easy2go.org/archives/000022.html
Apache性能優化
在 httpd.conf 中設置 "HostNameLookups off" 能避免針對每個訪問者的 DNS 功能變數名稱的反向查詢。
對於繁忙的網站,在 httpd.conf 中設置 "MaxClients 250" 或者更高。這項設置讓更多的 httpd 進程同時回應請求,並避免了處理器排隊的情況發生。
缺保您的 Web 頁面和 CGI 頁面採用了瀏覽器緩衝技術。例如採用 mod_gzip 加速 Zope 和 Apache保持您的 Apache 苗條,編譯那些僅僅需要的模組,在編譯之前,修改 src/Configuration 文件,在那些不需要的模組之前用 # 號注釋掉。
如果不需要流量日誌,那l把 httpd.conf 中的 TransferLog 指向到 /dev/null/除非你確定使用 .htaccess 文件來控制一些目錄的許可權,否則設置 "AllowOverride None" ,這樣就免去 Apache 在每個目錄搜索 .htaccess 文件的勞役之苦。
不要讓不需要的後臺進程運行。
千萬不要把頁面或者日誌文件寫到網路磁片上,例如 NFS。
不要讓 Apache (httpd) 運行於 inetd 模式。
不要讓 X Windows 運行在你的 Web 伺服器上,用 Ctrl-Alt-Backspace 關閉 X 。
避免使用 SSI tag。在 CGI 腳本中:
文件 I/O:打開的文件數目越少越好。
Shell 命令:採用全路徑來調用 shell 命令。
如果你的網站主要以 CGI 來驅動,那l請使用 mod_perl。
在你的 Web 頁面目錄中,不要讓文件數超過 1000 個,文件越多花費在定位上的時間也越多。
在 Web 伺服器上的圖片越少越好,保證每個圖片都經由圖片壓縮器運行。
採用另外一台伺服器處理圖片文件。 編譯
修改src/include/httpd.h
代碼:--------------------------------------------------------------------------------
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#elif defined(NETWARE)
#define HARD_SERVER_LIMIT 2048
#else
#define HARD_SERVER_LIMIT 1024
#endif
#endif
--------------------------------------------------------------------------------
在configure前添加代碼:--------------------------------------------------------------------------------
CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"
--------------------------------------------------------------------------------例如代碼:--------------------------------------------------------------------------------
CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure ..............
--------------------------------------------------------------------------------
注意,這裏優化的是intel pentium pro以上處理器(i686)
如果你是i386,使用-m386
如果你是i486,使用-m486
如果你是i586,使用-mpentium
如果你是i686,使用-mpentiumpro
如果你是AMD CPU,使用-mcpu=k6
自行修改選項使用gmake代替make
以上d編譯的優化
設置上的優化
httpd.conf代碼:--------------------------------------------------------------------------------
Timeout 120
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
#超時及保持連接設置
MinSpareServers 5
MaxSpareServers 15
StartServers 8
#進程妍奀惆謘A過多不好,而且導致妍妧C
MaxClients 512
#最大連接512,根據實際調整
MaxRequestsPerChild 1024
#每個進程1024只回應1024次,每回應1024就自動終止本身,並且坏庢s的進程
#這樣可以避免一個進程佔用的資源無法回收
HostnameLookups Off
#關掉連接進來的主機的名字lookup
--------------------------------------------------------------------------------減少不必要的modules,去掉不用的loadmodule,addmodule
另外,如果你是公網的一台伺服器,而且對所有人開放允許連接,那l可以注釋了httpd.conf裏面所有order,allow,deny語句使用mod_perl代替perl,使用php的apache module代替php-cgi
編譯
代碼:--------------------------------------------------------------------------------
CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --without-innodb
--------------------------------------------------------------------------------注意,這裏優化的是intel pentium pro以上處理器(i686)
如果你是i386,使用-m386
如果你是i486,使用-m486
如果你是i586,使用-mpentium
如果你是i686,使用-mpentiumpro
如果你是AMD CPU,使用-mcpu=k6
自行修改選項
如果你需要用到innodb表,請去掉最後的 --without-innodb
使用gmake代替make使用MySQL-MAX代替MySQL
以上d編譯的優化MySQL的配置
my.cnf
my.cnf,在mysql的安裝目錄support-files下有幾個範例,選一個適合自己的
另外還要修改一下my.cnf代碼:--------------------------------------------------------------------------------
skip-locking
#log-bin
#去掉log
server-id = 1
skip-innodb
#去掉innodb支援
set-variable = thread_concurrency=4
#設置d你的cpu數目x2,例如,只有一個cpu,那lthread_concurrency=2
#有一個cpu,那lthread_concurrency=4
--------------------------------------------------------------------------------將你的表轉換dMYISAM形式
MySQL就這樣了,是沒東西說的
另外,如果你不怕是用測試版,可以用mysql4來代替mysql3,性能會有提升的
只是mysql4還是Alpha版本
編譯
代碼:--------------------------------------------------------------------------------
CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-mysql --with-apxs=/apache1/bin/apxs --enable-trans-sid --disable-debug --enable-inline-optimization --enable-mbstring
--------------------------------------------------------------------------------注意,這裏優化的是intel pentium pro以上處理器(i686)
如果你是i386,使用-m386
如果你是i486,使用-m486
如果你是i586,使用-mpentium
如果你是i686,使用-mpentiumpro
如果你是AMD CPU,使用-mcpu=k6
自行修改選項
使用gmake代替make優化
添加zend optimizer
添加zend accelerator
使用zend encoder unlimited來編譯php源代碼
mmap_static_module:mod_mmap_static.c
mod_mmap_static.so
mmap_static_module的作用是將部分 靜態文件 存放在內核緩存
不過,要小心配置mmap,因d這個會導致系統不穩定,甚至當機。另外,似乎只有xNIX主機可以使用這個。首先必須loadmodule mod_mmap_static.so或者已經編譯進httpd
確認module裝載了後
httpd.conf 設置語法(建議放在所有addmodule的最後,如果你沒用到addmodule,那l就放在所有loadmodule後面)MMapFile 文件1 文件2 .......由於必須是靜態文件,那l適合放進mmap的文件是.htm .html .txt .js還有就是圖片文件,除了這些,配置文件conf,.htaccess .htpasswd之類也可以需要注意的是,mmap提供文件的緩衝數有限,大概是1000個,並且單個文件的不要太大,所有動態的文件不要放進mmap,例如.php .cgi .pl等
maxclient默認的最大值d256,我在solaris sparc 9的機器上,如果沒有重新編譯,怎l都超不過這個值,重新編譯的方法:
/usr/local/src/httpd-2.0.48/server/mpm/prefork/prefork.c
#define DEFAULT_SERVER_LIMIT 256
我這個值調大,我現在調整的是2000
然後安裝:
./configure --prefix=/usr/local/apache2 --enable-so
make
make install
這樣最大可以達到2000
由 powerbsd 發表於 2004年01月02日 下午01時59分 發表人 - conundrum 於 2004/01/27 19:15:54
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |