Suorituskyky

Kuinka jäsentäjä käsittelee 100 Mt lokitiedostoja ilman, että palvelimesi muisti loppuu, ja mitä voit tehdä muunnosten nopeuden ylläpitämiseksi.

For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /fi/docs/04-performance/index.md.

DNS-vianmäärityslokit vilkkaalla toimialueen ohjaimella ovat suuria. Convert-DNSDebugLogFile on suunniteltu tätä varten: sitä on testattu yli 100 Mt:n lokitiedostoilla, ja se käsittelee ne minuuteissa tavallisella palvelinlaitteistolla.

Miksi se on nopea

Et tarvitse tätä tietoa moduulin käyttämiseen, mutta se selittää havaitsemasi käyttäytymisen.

TekniikkaHuomattava vaikutus
StreamReader / StreamWriter 64 kt puskureillaTiedosto luetaan ja kirjoitetaan paloissa yhden suuren Get-Content-kutsun sijaan
Virtaava, yksinkertainen läpikäyntiMuistin käyttö pysyy suunnilleen samana riippumatta lokin koosta
Merkkijono-operaatiot (.Substring(), .IndexOf()) säännöllisten lausekkeiden sijaanHuomattavasti vähemmän CPU-käyttöä per rivi, ja rivejä on miljoonia
CSV kirjoitetaan käsin Export-Csv-komennon sijaanEi objektiputken ylikuormitusta per tietue
Tilastojen kokoaminen hashtablen avullaYhteenvedot maksavat lähes mitään saman läpikäynnin aikana

Tärkeä seuraus: koko lokia ei koskaan pidetä muistissa kerralla. 500 Mt:n loki ei tarvitse 500 Mt RAM-muistia. Tämä erottaa moduulin kotikutoisista skripteistä, jotka lukevat tiedoston, pilkkovat sen ja rakentavat objekteja — tuo lähestymistapa toimii hyvin 5 Mt:n näytteellä, mutta kaatuu oikealla DC:llä.

Parhaan suorituskyvyn saaminen

Muunna kiertävät palat, älä yhtä jättitiedostoa

Määritä DNS-palvelin kierrättämään loki hallittavissa olevassa koossa — 50–200 Mt on hyvä haarukka. Useat keskikokoiset tiedostot muuntuvat ennustettavasti ja ajoitettu tehtävä ehtii valmistua ajoissa. Yksi jatkuvasti kasvava tiedosto ei.

Kiertäminen antaa myös suljetut tiedostot käsiteltäväksi, mikä on muutenkin toivottavaa:

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME

Ohita yksityiskohtainen jäsentäminen, jos et tarvitse sitä

Jos DNS-palvelin kirjoittaa täydelliset pakettitiedot, niiden muuntaminen JSON-muotoon on muunnoksen kallein osa.

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -NoDetailsParsing

Odota 30–50 % nopeampia suorituksia lokeilla, joissa on paljon yksityiskohtaisia lohkoja, sekä huomattavasti pienempi CSV. Saat silti kyselytason tiedot ja TCP/UDP-yksityiskohtaisen otsikkorivin Information-tietueessa. Katso Parametrit ja asetukset.

Suodata aikaisin

-ContextFilter Packet pudottaa palvelinmuistiinpanot ja tapahtumat ennen niiden kirjoittamista. Vähemmän tulostusta tarkoittaa vähemmän I/O:ta, pienempiä tiedostoja ja vähemmän työtä jälkikäsittelyssä.

Pyydä vain tarvitsemasi

-OutputType Statistic ohittaa rivikohtaisen CSV:n kirjoittamisen kokonaan. Jos kojelaudallasi näytetään vain päivittäiset määrät, tämä on selvästi halvin vaihtoehto.

Muunna paikallisesti, siirrä tulokset

Moduuli lukee SMB/UNC-polkuja, mutta 200 Mt:n raakaa lokia siirtäminen verkon yli keskitettyyn jäsentämiseen on hidas tapa. Muunna DNS-palvelimella ja siirrä sitten (pakattu) CSV — se on yleensä kymmenesosa tavuista. Tämä on suunnittelun taustalla GPO-ohjatun keräyksen esimerkissä.

Pakkaa siirtoa ja arkistointia varten

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput

Tämän muotoinen CSV kutistuu tyypillisesti 90 % tai enemmän. Pakkaus vaatii hieman CPU:ta suorituksen lopussa, mutta säästää paljon levytilaa ja verkon kaistaa myöhemmin.

Kun suoritus on odotettua hitaampi

Tarkista nämä järjestyksessä:

  1. Levy, ei CPU. Muunnos on I/O-raskas. Lokitiedosto vilkkaalla asemalla tai hidas linkki hallitsee suoritusaikaa.
  2. Yksityiskohtaiset lohkot. Jos lokissa on täydelliset pakettitiedot etkä käyttänyt -NoDetailsParsing-valitsinta, aika kuluu niihin.
  3. Tiedoston koko. Yksi monigigatavun loki kestää kauan joka tapauksessa. Korjaa tämä kierrätyksellä, älä parametreilla.
  4. Virustorjunta. Sekä lähdelokin että tuotetun CSV:n reaaliaikainen tarkistus voi kaksinkertaistaa I/O-kustannukset. Poissulku lokihakemistolle on yleinen ja järkevä toimenpide.
  5. Muistipaine. Moduuli käyttää virtausta, joten sen ei pitäisi olla syy — mutta palvelin, joka jo käyttää swap-tilaa, hidastaa kaikkea.

Lisää oireita ja korjauksia on koottu Vianmääritykseen.