seacaptain 回復于:2003-12-22 11:14:52 |
老大你先開個頭嗎
把你怎么優化apache的經驗貼出來,大家分享 謝謝了 |
HonestQiao 回復于:2003-12-22 14:24:39 |
在 httpd.conf 中設置 "HostNameLookups off" 能避免針對每個訪問者的 DNS 域名的反向查詢。
對于繁忙的網站,在 httpd.conf 中設置 "MaxClients 250" 或者更高。這項設置讓更多的 httpd 進程同時響應請求,并避免了處理器排隊的情況發生。 缺保您的 Web 頁面和 CGI 頁面采用了瀏覽器緩沖技術。例如采用 mod_gzip 加速 Zope 和 Apache保持您的 Apache 苗條,編譯那些僅僅需要的模塊,在編譯之前,修改 src/Configuration 文件,在那些不需要的模塊之前用 # 號注釋掉。 如果不需要流量日志,那么把 httpd.conf 中的 TransferLog 指向到 /dev/null/除非你確定使用 .htaclearcase/" target="_blank" >ccess 文件來控制一些目錄的權限,否則設置 "AllowOverride None" ,這樣就免去 Apache 在每個目錄搜索 .htaccess 文件的勞役之苦。 不要讓不需要的后臺進程運行。 千萬不要把頁面或者日志文件寫到網絡磁盤上,例如 NFS。 不要讓 Apache (httpd) 運行于 inetd 模式。 不要讓 X Windows 運行在你的 Web 服務器上,用 Ctrl-Alt-Backspace 關閉 X 。 避免使用 SSI tag。在 CGI 腳本中: 文件 I/O:打開的文件數目越少越好。 Shell 命令:采用全路徑來調用 shell 命令。 如果你的網站主要以 CGI 來驅動,那么請使用 mod_perl。 在你的 Web 頁面目錄中,不要讓文件數超過 1000 個,文件越多花費在定位上的時間也越多。 在 Web 服務器上的圖片越少越好,保證每個圖片都經由圖片壓縮器運行。 采用另外一臺服務器處理圖片文件。 |
HonestQiao 回復于:2003-12-22 14:26:31 |
編譯
修改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 以上為編譯的優化 設置上的優化 httpd.conf代碼:-------------------------------------------------------------------------------- Timeout 120 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 #超時及保持連接設置 MinSpareServers 5 MaxSpareServers 15 StartServers 8 #進程啟動控制,過多不好,而且導致啟動慢 MaxClients 512 #最大連接512,根據實際調整 MaxRequestsPerChild 1024 #每個進程1024只響應1024次,每響應1024就自動終止本身,并且啟用新的進程 #這樣可以避免一個進程占用的資源無法回收 HostnameLookups Off #關掉連接進來的主機的名字lookup --------------------------------------------------------------------------------減少不必要的modules,去掉不用的loadmodule,addmodule 另外,如果你是公網的一臺服務器,而且對所有人開放允許連接,那么可以注釋了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 以上為編譯的優化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 #設置為你的cpu數目x2,例如,只有一個cpu,那么thread_concurrency=2 #有一個cpu,那么thread_concurrency=4 --------------------------------------------------------------------------------將你的表轉換為MYISAM形式 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,因為這個會導致系統不穩定,甚至當機。另外,似乎只有xNIX主機可以使用這個。首先必須loadmodule mod_mmap_static.so或者已經編譯進httpd 確認module裝載了后 httpd.conf 設置語法(建議放在所有addmodule的最后,如果你沒用到addmodule,那么就放在所有loadmodule后面)MMapFile 文件1 文件2 .......由于必須是靜態文件,那么適合放進mmap的文件是.htm .html .txt .js還有就是圖片文件,除了這些,配置文件conf,.htaccess .htpasswd之類也可以需要注意的是,mmap提供文件的緩沖數有限,大概是1000個,并且單個文件的不要太大,所有動態的文件不要放進mmap,例如.php .cgi .pl等 |
IPphone 回復于:2003-12-24 10:22:54 |
[code:1:7762e73f6b]
root#CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure CFLAGS=-O6 -mpentiumpro -fomit-frame-pointer: Command not found. [/code:1:7762e73f6b] 這是哪個命令不行?????? 沒像喬楚這樣做過,嘗試中…… 必須用gmake 代替 make 嗎?? |
oramind 回復于:2003-12-25 00:33:22 |
mod_gzip actually slows down cpu. it's a tradeoff between bandwidth and cpu. if you have plenty of bandwidth, don't use it. |
hanyangz 回復于:2003-12-25 10:25:49 |
我用的是apache2.0
maxclient的樹木最多可以設置多少?好象我改成512,但重新啟動還是用256,是不是256是最大值???? |
xiaohua 回復于:2003-12-27 11:02:49 |
請問樓主:
第貼的 APACHE httpd.h 是什么版本的?我用 2.0.48 都沒有這些數值 |
hanyangz 回復于:2004-01-02 11:21:16 |
maxclient默認的最大值為256,我在solaris sparc 9的機器上,如果沒有重新編譯,怎么都超不過這個值,重新編譯的方法:
/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 |
xiaohua 回復于:2004-01-02 22:03:38 |
我將它,改到 8500 了
[img:e418d2a6f3]http://mail.qiangzhu.net/bbs/files/apache2.png[/img:e418d2a6f3] :lol: :lol: |
Bendy 回復于:2004-01-13 21:37:38 |
沒有什么新意. |
冷風 回復于:2004-01-14 15:23:58 |
老 |
iHero 回復于:2004-01-17 11:48:02 |
[quote:5833a9205d="hanyangz"]我用的是apache2.0
maxclient的樹木最多可以設置多少?好象我改成512,但重新啟動還是用256,是不是256是最大值????[/quote:5833a9205d] 下面的文章說的非常好! http://www.cnfug.org/journal/3/02.html |
zhangweibo 回復于:2004-01-27 21:55:33 |
我一般用mod_gzip和Zend.Performance.Suite+squid反向代理來提供網站的速度
mod_gzip 和ZPS安裝是很簡單的,squid的應用大家可看我以前貼的文章,也可到我的網站去看 |
hanyangz 回復于:2004-03-05 14:01:18 |
vi httpd-2.0.48/server/mpm/worker/worker.c
找到 #define DEFAULT_SERVER_LIMIT 16 將這個值調大,不高于20000都可以,調整的是 2560 然后cd httpd.2.0.48 ./configure --prefix=/home/webadm --enable-so --with-mpm=worker make make install 理論上應該可以很大的提高系統性能,但沒開始測試! |
fxdfbl 回復于:2004-03-08 02:30:49 |
./configure --prefix=/home/webadm --enable-so --with-mpm=worker
我測試過這樣的編譯,理論上來說還是不錯的說~~~但沒有用,還是工作在prework下面~ |
hanyangz 回復于:2004-03-08 16:59:48 |
如果是bsd的操作系統好象是不行,他對線程的支持不好!
我用的是linux系統,還沒開始正式用! |
swingcoder 回復于:2004-04-11 11:03:55 |
[quote:4b40c9911c="fxdfbl"]./configure --prefix=/home/webadm --enable-so --with-mpm=worker
我測試過這樣的編譯,理論上來說還是不錯的說~~~但沒有用,還是工作在prework下面~[/quote:4b40c9911c] 誰有經驗關于server-pool優化使用 prefork mpm worker mpm prechild mpm 這間應該如何配置???? |
swingcoder 回復于:2004-04-11 13:24:22 |
http://httpd.apache.org/docs-2.0/mod/worker.html |
wangbin 回復于:2004-04-30 06:21:53 |
/usr/ports/www/apache2/work/httpd-2.0.49/include |
wangbin 回復于:2004-04-30 06:26:51 |
/usr/ports/www/apache2/work/httpd-2.0.49/server/mpm/prefork
enhand# |
akenlx 回復于:2005-03-27 19:28:00 |
server_limit 和 max_clients 什么關系呀,max是最大客戶端連接數,但同時又有個limit。二者什么關系呢 |