Veebiserveri optimiseerimine

From ICO wiki
Jump to navigationJump to search

Autor

Ees-ja perekonnanimi: Madis Mark

Rühm: A22 päevaõpe

Riistvara valik

Kõige tähtsam veebiserveri puhul on HTTP päringute arv sekundis ning arvutitevaheline kosteaeg. See kosteaeg on kulunud aeg päringu ja soovitud HTML-i saatmise lõpu vahel.

Veebiserveri puhul on oluline, et kliendid ei peaks ootama ning veebilehekülje avanemiseks võtaks aega alla sekundi.

Protsessor

HTTP päringu teenuse osutamine ei vaja niivõrd palju protsessori kasutust. Samas kasutamata ressursse saab kindlasti ära kasutada ja pakkida HTTP-d, et veebiserveri transpordikiirust parandada.

Kasutada tuleks igatahes 64-bitist protsessorit, mis ongi Windows Server 2012 eelduseks. Taktsagedusest on tähtsam suurte L2 või L3 protsessori vahemälu olemasolu, mis parandavad jõudlust märgatavalt.

Mälu

Mälu on veebiserveri puhul kõige olulisem. Enamikel veebiserveritel on lehed, mis on teistest populaarsemad ning kõige populaarsemate piltide puhul vahemälu kasutamine parandab HTML vastuste aega meeletult.

Tasub paigaldada vähemalt 4GB püsimälu koos võimaliku 16GB pikendusega, olenevalt tihedalt külastatud lehekülgede ja piltide suurusest.

Saaleala(page file) on soovitatav paigaldada operatsioonisüsteemist eraldi füüsilisele kettale, et saalefail ei kasutaks sama seadet, mis kasutavad teised tihedalt ligipääsetavad failid.

Kõvakettad

Kõvaketaste puhul on kõige olulisem, et lugemise/kirjutamise peade liikumisest tekitatud kosteaeg poleks pikk. Tuleks eelistada ülikiireid SSD kettaid, eriti veebi vahemälu puudumisel.

Võrguseadmed

Windows Server 2012 puhul on vägagi soovituslik kasutada PCI Express (PCIe) võrguseadmeid vastavate pesadega, et vähendada koormust protsessorile. Samuti tasub siinikiiruse piiri vältimiseks kasutada PCIe x8 või kõrgemaid pesasid 10 Gigabit Etherneti adapterite jaoks.

Energiasäästlikkus

Tänapäeval on energiakasutus aina olulisem osa serverite puhul ning tähtis on ressursse võimalikult otstarbekalt kasutada. Windows Server 2012 on õnneks optimiseeritud suurepäraseks energiakasutuseks minimaalse jõudluse mõjuga, nii et enamike juhtude korral ei pea administraator seda manuaalselt veel tuunima.

Operatsioonisüsteemi tavad

  • Kui võimalik, siis on soovitatav teha värske Windows-i paigaldus. Tarkvara uuendamine võib jätta alles vanad ja ebasobivad registriseaded ning eelnevalt paigaldatud teenused ja aplikatsioonid, mis ressursse neelavad. Kui kasutatakse teist operatsioonisüsteemi, siis peaks selle teisele kettajaole installeerima.
  • Et vähendada ketta poole pöördumiste arvu, tasub süsteemi saalefail, operatsioonisüsteem, veebi andmed, ASP template vahemälu ja IIS(Internet Information Services) logifail hoida eraldi füüsilistel ketastel.
  • Süsteemi ressursside mõistlikuks jaotuseks on soovitatav paigaldada SQL Server ja IIS eraldi serveritele, kui võimalik.
  • Vältige üleliigseid teenuseid ja programme. Mõnikord on mõistlik kasutamata teenused deaktiveerida.

IIS 8.0 optimiseerimine

Internet Information Services (IIS) 8.0 on osa Windows Server 2012-st. Kasutab sarnast protsessi nagu IIS 6.0. Kernel-mode veebidraiver(http.sys) võtab vastu ja suunab HTTP päringuid, ning suudab täita päringuid oma vastuse vahemälult.

IIS 8.0 protsess sõltub kernel-mode veebidraiverist, http.sys, mis on vastutav ühenduste halduse ja vastuste töötlemise eest.

Http.sys sisaldab vastuse vahemälu. Kui päring klapib kirjega vastuse vahemälus, siis http.sys saadab vahemälu vastuse otse kerneli režiimist.

Kuna veebiserveril on olemas nii kerneli režiimi kui ka kasutaja režiimi komponendid, siis on vajalik mõlemaid optimiseerida. Seega IIS 8.0 optimiseerimine hõlmab järgnevate konfigureerimist:

  • Http.sys ja seotud kernel-mode vahemälu.
  • Worker protsessid ja user-mode IIS, kaasaarvatud aplikatsioonide pool-i seadistamine.
  • Mõned jõudlust mõjutavad optimiseerimise parameetrid

Kernel-Mode häälestamine

Jõudlusega seotud http.sys sätted jagunevad kaheks: vahemälu haldus ja ühendus, ning päringuhaldus. Kõiki registri sätteid hoitakse kirjes:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters

NB! Kui HTTP teenus samal ajal töötab, on vaja see seadete värskendamiseks taaskäivitada

Cache Management sätted

Üks eelis http.sys puhul on kernel-mode vahemälu olemasolu. Kui HTML-i vastus on vahemälus, siis on võimalik HTTP päring tõita otse kerneli režiimist, mis vähendab tunduvalt CPU kulu.

Kasulikud sätted http.sys kernel-mode vahemälu jaoks:

  • UriEnableCache (vaikimisi 1)
  • UriMaxCacheMegabyteCount (vaikimisi 0) - Maksimaalne mälu, mis on saadav kernel-mode vahemälule. Vaikimisi 0 väärtus võimaldab süsteemil automaatselt ise kohanduda.
  • UriMaxUriBytes (vaikimisi 262144 bytes) - Maksimaalne kirje suurus vahemälus. Kui on piisavalt mälu, tasub seda limiiti suurendada.
  • UriScavengerPeriod (vaikimisi 120 seconds) - Http.sys vahemälu skanneeritakse pidevalt scavangeri poolt ning kirjed, mille poole skanneerimise ajal ei pöörduta, kustutatakse. Väärtuse suurendamine vähendab skanneeringute arvu, kuigi vahemälu kasutus võib suureneda, sest vähem kasutatud kirjed võivad sinna alles jääda.

Request and Connection Management Settings

Windows Server 2012 puhul haldab http.sys ühendusi automaatselt, seega pole neid seadeid vaja muuta.

User-Mode häälestamine

User-Mode sätted mõjutavad IIS 8.0 protsesside käitumist. Enamik neist sätetest asub järgnevas XML konfiguratsioonifailis:

 %SystemRoot%\system32\inetsrv\config\applicationHost.config

Kasuta Appcmd.exe või IIS 8.0 Management Console-i, et neid muuta. Üldiselt tuvastatakse muutused automaatselt, seega ei ole vaja teha restarti.

User-Mode Cache Behavior Settings

Need sätted mõjutavad IIS 8.0 vahemälu puudutavat käitumist. Et täiesti user-mode vahemälu eemaldada, tuleb kustutada FileCacheModule (cachfile.dll) moodul installeeritud moodulite listist system.webServer/globalModules.

system.webServer/caching:

  • Enabled (vaikimisi True) - User-mode IIS vahemälu kasutamine.
  • enableKernelCache (vaikimisi True) - Kernel-mode vahemälu kasutamine.
  • maxCacheSize (vaikimisi 0) - Täpsustab IIS user-mode vahemälu suuruse megabaitides. Vaikimisi 0 väärtus teeb seda automaatselt vastavalt saadavale mälule. Vali see vastavalt tihedalt kasutatud failide suurusele ja püsimälu kogusele või IIS protsessi aadressiruumile.
  • maxResponseSize (vaikimisi 262144 bytes) - Paneb kuni kindla suurusega failid vahemällu.

Compression Behavior Settings

Windows Server 2012 puhul pakib IIS 8.0 staatilise sisu automaatselt. Ja kui DynamicCompressionModule on paigaldatud, pakitakse ka dünaamiline sisu. Pakkimine vähendab ülekandekiirust, aga suurendab CPU kasutust.

Et täiesti pakkimine deaktiveerida, tuleb eemaldada StaticCompressionModule ja DynamicCompressionModule installeeritud moodulite listist system.webServer/globalModules.

system.webServer/httpCompression

  • staticCompression-EnableCpuUsage (vaikimisi 50)
  • staticCompression-DisableCpuUsage (vaikimisi 100)
  • dynamicCompression-EnableCpuUsage (vaikimisi 50)
  • dynamicCompression-DisableCpuUsage (vaikimisi 90)

Lubab pakkimist või mitte, vastavalt CPU kasutuse protsendile. Kui CPU kasutus langeb alla Enable läve, pakkimine lubatakse.

  • directory (vaikimisi %is %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files) - Kataloog, kus hoitakse pakitud versioone staatilistest failidest. Kui süsteemi ketast kasutatakse tihti, tasub see kataloog liigutada muu kettale.
  • doDiskSpaceLimiting (vaikimisi True) - Määrab, kas limiit, kui palju kettaruumi pakitud failid saavad kasutada, eksisteerib.
  • maxDiskSpaceUsage (vaikimisi 100MB) - Määrab maksimaalse kettaruumi pakitud failidele, mis pakkimise kaustas viibivad. Võimalik, et seda on vaja suurendada, kui kogu pakitud sisu suurus on liiga kõrge.
  • doStaticCompression (vaikimisi True) - Määrab, kas staatiline sisu pakitakse.
  • doDynamicCompression (vaikimisi True) - Määrab, kas dünaamiline sisu pakitakse.

NB! IIS 8.0 serverite puhul, millel on väike keskmine CPU kasutus, tasub pakkimist lubada dünaamilise sisu korral, eriti kui HTML vastused on suured.

Default Document List

See moodul tegeleb HTTP päringutega ja tõlgib need spetsiifilise faili jaoks nagu Default.htm või Index.htm. Kui HTTP päring ei täpsusta failinime, siis see moodul otsib vaikimisi lubatud dokumentide listist. Dokumentide list peaks olema võimalikult väike ja mõistlikult koostatud, et jõudlus kannatada ei saaks.

Et täiesti vaikimisi dokumendid eemaldada, tuleb kustutada DefaultDocumentModule installeeritud moodulite listist system.webServer/globalModules.

system.webServer/defaultDocument

  • enabled (vaikimisi True) - Määrab, kas vaikimisi dokumendid on lubatud.
  • <files> element (vaikimisi Default.htm, Default.asp, Index.htm, Index.html, Iisstart.htm, Default.aspx) - Määrab failide nimed, mis on seatud paika vaikimisi dokumentidena.

Central Binary Logging

Binary IIS logimine vähendab CPU kasutust, ketta I/O-d ja kettaruumi kasutust. See on suunatud üheainsale failile binaarsüsteemis, mistahes kui suur on majutatud veebisaitide arv.

Seda saab lubada määrates centralLogFileMode väärtuseks CentralBinary ja enabled väärtuseks True. Logifail tasub liigutada süsteemi partitsioonilt eemale, et vältida konflikte süsteemi tegevuste ja logimise tegevuste vahel.

system.applicationHost/log

  • centralLogFileMode (vaikimisi Site) - Määrab logimise režiimi serveri jaoks.
  • enabled (vaikimisi False) - Määrab, kas central binary logimist kasutatakse.
  • diretory (vaikimisi %SystemDrive%\inetpub\logs\LogFiles) - Määrab kausta, kuhu kirjutatakse logid.

Application and Site Tunings

Managing IIS 8.0 Modules

IIS 8.0 koosneb paljudest moodulitest, mis on vastavalt vajadusele kohandatavad. Protsessori tsüklite arvu ja mälu on võimalik kokku hoida, kui ebavajalikud moodulid eemaldada.

Veebiserver, mis on optimiseeritud ainult lihtsate staatiliste failide jaoks, võib sisaldada ainult 5 moodulit: UriCacheModule, HttpCacheModule, StaticFileModule, AnonymousAuthenticationModule ja HttpLoggingModule.

Et eemaldada moodulid applicationHost.config failist, tuleb eemaldada ka kõik viited moodulile system.webServer/handlers ja system.webServer/modules sektsioonidest lisaks system.webServer/globalModules sektsioonile.

Classic ASP Settings

ASP.NET Concurrency Setting

Vaikimisi piirab ASP.NET päringute kokkulangevust, et vähendada mälu kasutust serveris. Kõrge kokkulangevusega aplikatsioonid võivad vajada veidi kohandamist, et üldist jõudlust parandada. Neid sätteid hoitakse järgneva registrikirje all:

HKEY_LOCAL_MACHINE\Software\Microsoft\ASP.NET\4.0.30319.0\Parameters

Worker Process and Recycling Options

Secure Sockets Layer Tuning Parameters

ISAPI

Managed Code Tuning Guidelines

NTFS sätted

Globaalne lüliti NtfsDisableLastAccessUpdate (REG_DWORD) 1 asub:

HKLM\System\CurrentControlSet\Control\FileSystem\

See lüliti vähendab ketta I/O koormust ja kosteaegasid lülitades välja kuupäeva ja kellaaja uuendamise viimase faili või kataloogi pöördumisel. Vaikimis väärtuseks on 1.

Värsked Windows Server 2012, Windows Server 2008 R2 ja Windows Server 2008 paigaldused määravad selle koheselt 1-ks, seega pole sellisel juhul vaja seda muuta. Kui aga on tegemist vanema Windows-i versiooniga või on Windows uuendatud, on vaja ise väärtuseks 1 määrata.

Uuenduste väljalülitamine on efektiivne, kui kasutatakse suurt andmete hulka, mis koosneb tuhandetest kataloogidest.

Networking Subsystem Performance Settings for IIS

Kasutatud kirjandus

1. Performance Tuning Guidelines for Windows Server 2012

2. http://www.dba-oracle.com/t_best_webserver_hardware_configuration.htm