線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:975
推到 Plurk!
推到 Facebook!

Apache性能優化

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-27 18:53:09 IP:61.221.xxx.xxx 未訂閱
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
系統時間:2024-05-06 22:03:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!