• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • [每周討論專題]--第二期--Apache性能優化

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    [b:43e1af0f0d][url=http://bbs.chinaunix.net/forum/13/20031212/221690.html][size=20:43e1af0f0d]每周討論專題[/size:43e1af0f0d][/url][/b:43e1af0f0d]【第二期】.......................................................[url=http://bbs.chinaunix.net

    [b:43e1af0f0d][url=http://bbs.chinaunix.net/forum/13/20031212/221690.html][size=20:43e1af0f0d]每周討論專題[/size:43e1af0f0d][/url][/b:43e1af0f0d]【第二期】.......................................................[url=http://bbs.chinaunix.net/forum/13/20031212/221690.html]點這里查看其他討論專題[/url]

    [b:43e1af0f0d][color=red:43e1af0f0d]  [size=24:43e1af0f0d]Apache性能優化[/size:43e1af0f0d][/color:43e1af0f0d][/b:43e1af0f0d]                                              
    [quote:43e1af0f0d]
    本期討論主旨為,如何讓Apache更好的更高效的工作,要讓它不吃草,還要它快快跑?。?!
    [/quote:43e1af0f0d]

     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。二者什么關系呢

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>