[linux-network] Re: Squid http-acceleration mode.

---------

From: ILKER FICICILAR (ilkerf@isbank.net.tr)
Date: Tue 13 May 2003 - 00:07:56 EEST

  • Next message: Burak DAYIOGLU: "[linux-network] Re: Exchange Server"

    Merhaba,

     Linux listeleri biraz yogun oldugundan okuma hIzIm gelen mektup
    sayIsIna yetisemiyor. Mektubunuzu yeni okuyorum, gec yanIt için kusura
    bakmayIn.

     Temelde www sunumunun verimini arttIrmak istemissiniz, sorunuza iki de
    yanIt verilmis, ama eklenebilecek birseyler var.

    1. apache'de gzip modülü var. bunu etkinlestirdiginizde html içerigi 3-4
    kat sIkIstIrarak tarayIcIya yollayabiliyorsunuz. Bu modülün etkin oldugu
    sunucu bir istek geldiginde bunu "Server:" basliginda "mod_gzip" ile
    belli eder. Bir tarayIcI da gzip ile sIkIstIrIlmIs veriyi acabilecegini
    "Accept-encoding: gzip" diyerek sunucuya bildirir. Bunu gören sunucu da
    kurallarda tanImlanan içerigi, baslik kisminda "Content-Encoding: gzip"
    ile diyerek ve veri kIsmInI da gzip ile sIkIstIrarak tarayiciya yollar.
    Yapmasi bu yazIlanlardan daha kolay:

    a) gzip modülüne sahip oldugunuzdan emin olun, yoksa kurun:
    /usr/lib/apache/mod_gzip.so

    b) httpd.conf'ta bu modülü belirtin:
    LoadModule gzip_module /usr/lib/apache/mod_gzip.so
    AddModule mod_gzip.c

    ve/veya Suse'de:

    # cat /etc/httpd/modules/mod_gzip
    Variable:HTTPD_SEC_MOD_GZIP
    LoadModule:LoadModule gzip_module /usr/lib/apache/mod_gzip.so
    AddModule:AddModule mod_gzip.c
    Text:gzip

    c) etkinlestirin, ve ayarlayin:
    <IfModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_item_include file \.php$
    mod_gzip_item_include file \.htm$
    mod_gzip_item_include file \.html$
    mod_gzip_item_include mime text/.*
    mod_gzip_dechunk yes
    mod_gzip_temp_dir /tmp
    mod_gzip_keep_workfiles No
    </IfModule>

    # Burada .php ile bitenleri, ve mime tipi text/plain text/html vs
    # olanlari da gziplettirdik. Tamponlari etkin kullandirttik, gzip islemi
    #sirasinda gecici dosyalari /tmp'de tuttuk, ve isimiz bitince onlari
    #(workfiles) sildirdik.
    #

    Bu kadar.
    Tabii apacheyi yeniden baslatmayi unutmazsak.
    Bu yöntem tek basina ciddi hizlanma sagliyor. Üstelik
    sIkIstIrma sonucu nesne büyüklügü de küçüldügünden önbellekler ve
    önbellekli proxy'ler daha etkin kullanIlabiliyor. Ve isabet yüzdesi
    artIyor.

    2. ikinci olarak. gözden kaçan çok güzel bir özellik var, o
    kullanilabilir: Expires Tag'I

    Apache'de gene kurallarla, sunulan nesnelere Expires basligi
    verdirtebiliyorsunuz. Expires basligi ile önbellekler daha akIlcI
    kararlar verebiliyor, hem nesneler önbelleklerde daha uzun süre kalIp
    istemciye daha yakIn olabiliyor, hem .php gibi anlIk üretilen verilerin
    de önbelleklenmesi mümkün olabiliyor, hem de sunucu yükünüz çok
    hafifliyor.

    Bunu da uygulamak kolay. Gene httpd.conf'a SunlarI ekliyoruz:

    ExpiresActive On
    # resimleri 1 yIl daha güncellemiyecegimi varsaydIm:
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    #ya da bunlarIn hepsini aynI tarihte gecersiz kIlabilirsiniz:
    #ExpiresByType image/jpeg "modification plus 1 year"
    #gibi... Aslinda Expires ile o verinin belli bir tarihe dek
    #degismeyecegini taahhüt ediyoruz.

    # Sitemizdeki .zip ve .rar dosyalarimiz da son erisim tarihinden
    #2 ay sonrasina dek gecerli olsun mesela:
    ExpiresByType application/rar "access plus 2 months"
    ExpiresByType application/zip "access plus 2 months"

    #html'ler için de birseyler yapalim:
    ExpiresByType text/html "access plus 7 days"
    #Ben haftada bir güncelleme yapiyorum. Siz "1 day" de
    #diyebilirsiniz.

    #ve .php gibi digerleri icin de bi kural olsun:
    ExpiresDefault "access plus 1 hour"
    #Bu benim kullandigim .php ve .cgi'ler için oldukça az aslinda.
    #Ben normalde 1 günlük expires kullaniyorum. Ama daha uzun da olabilir.
    #verdigim parametrelerle hep ayni sonucu döndürdükleri için sorun yok.
    #degisen icerigi (reklam dönüsümü gibi) javascript ile istemci tarafinda
    #hallediyorum.
    #Ama siz borsa verileri geciyorsaniz, burada
    #"modification plus 5 minutes" kullanabilirsiniz.

    Bu yöntem de bu kadar. Etkinlestirmek icin httpd yeniden baslatilmali
    gene.

    Expires yöntemi, özellikle anlik yüklenmelerde oldukça faydalI olabilir.
    Bu gibi durumlarda, Expires ile sunucu bantgenisligi ve CPU gücü
    darbogaz olmaktan cIkIyor.

    Bu iki yöntem hakkinda www.w3.org ve www.mozilla.org 'da bir takIm
    belgeler bulabilirsiniz.

    3. BunlarIn yanInda sizin sordugunuz squid'in httpd-accel özelligi de,
    eger kurallarIn biraz dIsIna cIkarsanIz daha cok ise yarar.

    (Bu arada squid hakkinda aklima gelmisken... mümkünse LRU yerine heap
    GDSF yöntemini kullandIrtIn önbellek yönetiminde. Daha verimli)

    squid.conf'ta kurcalanabilecek birkac ayar:
    a) refresh_pattern
    bu da expires tag'i gibi is görüyor.
    ayrintilarini squid.conf'un içindeki ilgili kisimda görebilirsiniz.
    Kisaca ordaki "this violates http standard" denilen hersey sizi
    hizlandiriyor. Mesela:
    refresh_pattern . 0 40% 4320 reload-into-ims \
    override-lastmod

    # Burada, bütün nesneler için ( . ) kural belirliyoruz, en düsük yaS 0
    # (dinamik veriler önbellenmesin diye IlImlI olduk),
    # digerleri Last-modified verisiyle yaS hesabindaki
    # agirlik %40, ve en cok 4320 yasinda.

    Bir baska örnek:
    refresh_pattern . 10 60% 8640 override-expire
    ignore-reload reload-into-ims override-lastmod

    #bunda daha acimasiz olduk ve "Pragma: no-cache" gibi basliklari da
    #görmezden geldik. Hatta apache'de ayarlanan Expires tarihlerini de
    #kaale almadik.

    Aslinda tek tek türlerine göre de ayirabiliyoruz:
    refresh_pattern \.cgi$ 1 20% 2
    refresh_pattern \.php$ 1 20% 2
    refresh_pattern \.gif$ 10080 100% 43200
    override-expire

    ... gibi.

    b) LRU tarafindan kullanilan algoritma esnetilebilir:
    reference_age 3 years
    gibi

    c) Reload/Refresh cagrilarini GET-IMS (If Modified Since) cagrilarina
    cevirtebilirsiniz:
    reload_into_ims on

    4. httpd ve accel. olarak kullaniyorsaniz squid'in pipeline http/1.1
    protokolünü kullandigindan emin olmak. Bunun niye HTTP/1.0 'dan ve hatta
    1.1'in persistent baglantisindan daha iyi oldugunun ayrinilari
    www.w3.org 'da yer aliyor.

    Bu cephede yapilabilecekler bu kadar gibi.

    5. Ama bir de sunulan veri miktarini ufaltmak ise yarar.
    Tek tek kim ugrasir diyorsaniz. Buyrun:
    .jpg'leri bizim yerimize ufaltabilecek bilgisayarimiz varken
    biz niye yapalim:

    #!/bin/sh
    ls *.jpg |while read qw
    do
    mv $qw ufal.jpg
    jpegtopnm ufal.jpg| pnmtojpeg --optimize --quality=50 > $qw
    done

    Burada da "quality" ile oynayarak, iyi görünen ve hizli sonuç veren bir
    çözüm arayabilirsiniz.

    6. Benzer bir islemi tidy adli programla .html'lere de
    uygulayabilirsiniz. Ve tabii site genelinde .css kullanmak da hiz
    sagliyor. Bir anda, sagda soldaki <font... /font> 'lardan
    kurtuluyorsunuz.

    Evet bu çözümler simdilik ise yariyacaktir saniyorum.

    Hoscakalin.

    On Wed, 23 Apr 2003 21:52:41 -0400
    "Serhan Sevim " <sevims@mezun.com> wrote:

    > Selam arkadaslar,
    > Ben squid server'i http-accelaration mode olarak, yani icerki
    > kullanicilarin disariya olan browsing hizini arttirmak icin degilde,
    > disari Internet'den gelen kullanicilarin sitemizi daha hizli
    > goruntuluyebilmelerini istiyorum. Simdi sorum ise basit.
    > Eger squid'i kurarsam web sitenin goruntulenmesi asagi yukari kac kat
    > hizlanir? Mesela, mezun.com'un web sayfasini ele alirsak, su ankinden
    > ne kadar farkli bir sonuc bekleyebiliriz sizce eger http-acceleration
    > mode'da calistigini farzedersek ? Not: Site Cold Fusion uzerinden
    > calisiyor. Tesekkurler,
    > Iyi calismalar,
    > Serhan Sevim.
    >

    -- 
    ... ilker FIÇICILAR              ilkerf@geocities.com
    ... http://ekitap.2y.net/       . Elektronik Kitaplar
    ... http://ekitap.2y.net/ftp.php     . E-Kitap Dizini
    ... http://ilkerf.tripod.com/teknik/  . Linux & Bilgi
    ... http://ekitap.kolayweb.com/   . Palm icin E-kitap
    ... http://mezopotamya.tripod.com/        . Arkeoloji
    ... http://nukleer.findhere.org/     . Nukleer Enerji
    ... http://ilkerf.tripod.com/cbm.html      . C64/C128
    ------------------------------------------------------------------
    Virus taramasi Vexira AV programi kullanilarak Is Net tarafindan yapilmistir.
    This e-mail is checked by Is Net against all known types of viruses using Vexira AV.
    Is Net'in en ucuz saatlik kullanim paketi Teneffus.Net'i ve en ucuz sinirsiz erisim paketi Taksitli Ekonet'i duymus muydunuz?
    http://www.isnet.net.tr/teneffusnet/
    http://www.isnet.net.tr/taksitliekonet/
    

  • Next message: Burak DAYIOGLU: "[linux-network] Re: Exchange Server"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.