Pienet kyselyt palaavat, suuret jumittuvat tai katkeavat, ja ensimmäinen vaisto sanoo, että paketin koossa on jotain vialla. Vaisto on yleensä oikeassa ja lähes aina suunnattu väärälle kerrokselle. Kolme asetusta jakaa sanan paketti ja mittaa kolmea toisiinsa liittymätöntä asiaa: tietokanta-ajurin kuljetuspaketointi, tietokantapalvelimen viestiraja ja IP-reitin suurin siirtoyksikkö. Yhden säätäminen toisen aiheuttaman oireen korjaamiseksi on se tapa, jolla viiden minuutin ongelmasta tulee viikon viritys. Alla oleva järjestys on se, joka on vienyt minulta vähiten aikaa.

Kolme kerrosta, yksi yhteinen sana

Jokainen alla oleva rivi on eri yksikkö eri omistajalta, eikä minkään niistä voi päätellä toisistaan. Tietokantaviesti voi kattaa monta TCP-segmenttiä ja monta IP-pakettia, joten sen sallitun koon suurentaminen ei levennä reittiä, eikä ajurin asetuksen pienentäminen ole sama toimenpide kuin liittymän MTU:n muuttaminen. Sana esiintyy kolmessa eri asetustiedostossa, minkä vuoksi sen hakeminen palauttaa kolme toisiinsa liittymätöntä vastausta. Lue ensin virheteksti ja päätä sitten, minkä tiedoston avaat.

Setting or observationUnit it describes
SQL Server client network packet settingThe provider's transport packaging for that connection
MySQL communication packet limitA database message, such as one statement, row or replication event
IP path MTUThe largest IP packet the path carries without fragmentation handling

Kirjoita muistiin, mihin kerrokseen epäonnistuva toimenpide kuuluu, ennen kuin avaat asetustiedoston. Virheteksti kertoo sen yleensä, ja juuri sen osan ihmiset ohittavat.

Tunnista tarjoaja ennen kuin muutat sen asetusta

Tallenna SQL Serveriä varten sovellus, ajurin tai tarjoajan nimi, versio ja tehokas yhteysasetus. Diagnostiikkaskripti ja työpöytäsovellus voivat tavoittaa saman palvelimen eri tarjoajien kautta, joten yhtä auttava asetus ei todista mitään toisesta. Tarjoajien oletukset eroavat, eikä samanniminen yhteysmerkkijonon kenttä ole todiste siitä, että jokainen tarjoaja tulkitsee sen samalla tavalla.

Älä vaihda ylläpidettyä ajuria vanhaan vain siksi, että vanha kiertotie käytti sen syntaksia. Nykyinen dokumentaatio ei kannusta uuteen kehitykseen noiden vanhempien komponenttien varaan, ja niiden rajoitusten periminen on huono vaihtokauppa yhdestä asetuksesta.

Viestin hylkäys ei ole reitin pysähdys

MySQL 8.4:ssä viestintäpaketin dokumentaatio kuvaa liian suuren lauseen, rivin tai binäärilokitapahtuman hylkäämisen soveltuvaa rajaa vastaan, ja sekä asiakkaan että palvelimen raja voivat olla merkityksellisiä. Se on hylkäys tietokantakerroksessa, ei väite, että verkon on kuljetettava valtava IP-paketti. Lue todellinen virhe ja ongelmallisen viestin muoto: monesta pienestä rivistä koostuva suuri tulos on eri tapaus kuin yksi valtava rivi, ja ne epäonnistuvat eri tavoin.

MariaDB-asennukset tarvitsevat oman versionsa dokumentoidut rajat ja diagnostiikan. MySQL:n oletusten kopioiminen MariaDB:hen on arvailua lisäaskelilla.

Miltä reitin näyttö todella näyttää

Reitin kokongelmalla on oma sormenjälkensä: toistettava koosta riippuva kuljetusvirhe tietyllä reitillä ja osoiteperheellä, tunnelin ylimääräisen rasituksen ollessa mukana ja löytöpalauteen käyttäytyessä niin kuin reitti sallii. Pelkkä aikakatkaisu ei erota sitä hitaasta kyselystä, ajurin virheestä tai palvelinpuolen rajasta, ja aikakatkaisun pitäminen MTU-ongelmien todisteena lähettää sinut itsevarmasti väärälle kerrokselle.

Jos testaat reittiä, pidä kohde, tili ja työkuorma kiinteinä, jotta ainoa muuttuja on koko, jota koettelet. Testi, jossa kolme asiaa muuttui, ei kerro sinulle, millä oli merkitystä.

Muuta yhtä dokumentoitua muuttujaa ja kirjaa se sitten

Pidä kohde, tili, tarjoaja ja työkuorma vakioina, kirjaa alkuperäinen arvo, tee yksi tuettu muutos ja kirjaa tulos. Pienempi asetus, joka saa yhden testin onnistumaan, on hyödyllistä näyttöä kyseisestä testatusta pinosta; se ei ole universaali optimi eikä se osoita, mikä aiheutti alkuperäisen virheen. Ne ovat eri väitteitä, ja vain ensimmäistä tukee yksi koe.

Ratkaise tunnistettu raja omassa kerroksessaan ja kirjaa sitten, mikä kerros se oli. Muistiinpano on se, mikä estää seuraavaa ihmistä virittämästä ajuria, koska ongelma oli reitissä.

Aiheeseen liittyvät artikkelit