Väikesed päringud töötavad, suured ebaõnnestuvad: milline paketi suurus see on?
SQL Serveri draiveri paketid, MySQL-i sõnumipiirid ja IP-tee MTU on erinevad ühikud. Suurusest sõltuv tõrge ei tee neid vahetatavateks.
Väikesed päringud tagastavad, suured jäävad rippuma või kukuvad, ja esimene mõte on, et paketi suurusega on midagi valesti. See mõte on tavaliselt õige ja peaaegu alati suunatud vale kihile. Kolm seadet jagavad sõna pakett ja mõõdavad kolme omavahel mitteseotud asja: andmebaasidraiveri transpordipakend, andmebaasiserveri sõnumipiir ja IP-tee maksimaalne edastusühik. Ühe reguleerimine, et parandada teise põhjustatud sümptomit, on viis, kuidas viieminutilisest probleemist saab nädal seadistamist. Alljärgnev järjekord on see, mis on mulle kõige vähem aega maksnud.
Kolm kihti, üks ühine sõna
Iga rida allpool on erinev ühik erineva omanikuga ja ühestki neist ei saa teiste põhjal järeldada. Andmebaasisõnum võib hõlmata paljusid TCP-segmente ja paljusid IP-pakette, seega selle lubatud suuruse suurendamine ei laienda teed ning draiveri seade vähendamine ei ole sama toiming kui liidese MTU muutmine. Sõna esineb kolmes erinevas konfiguratsioonifailis, mistõttu selle otsimine annab kolm mitteseotud vastust. Lugege esmalt veateksti ja otsustage siis, millist faili avada.
| Setting or observation | Unit it describes |
|---|---|
| SQL Server client network packet setting | The provider's transport packaging for that connection |
| MySQL communication packet limit | A database message, such as one statement, row or replication event |
| IP path MTU | The largest IP packet the path carries without fragmentation handling |
Kirjutage üles, millisesse kihti ebaõnnestunud toiming kuulub, enne kui avate konfiguratsioonifaili. Veatekst ütleb seda tavaliselt, ja just selle osa inimesed vahele jätavad.
Tehke pakkuja kindlaks enne selle seade muutmist
SQL Serveri puhul kirjutage üles rakendus, draiveri või pakkuja nimi, versioon ja tegelik ühenduse konfiguratsioon. Diagnostikaskript ja töölauarakendus võivad jõuda samasse serverisse erinevate pakkujate kaudu, seega ühele kasu toov seade ei tõesta teise kohta midagi. Pakkujate vaikeväärtused erinevad, ja sarnase nimega ühendusstringi väli ei ole tõestus, et iga pakkuja tõlgendab seda ühtemoodi.
Ärge asendage hooldatavat draiverit vanemaga ainult seetõttu, et vana lahendus kasutas selle süntaksit. Praegune dokumentatsioon ei soovita nende vanemate komponentide vastu uut arendust, ja nende piirangute pärimine on ühe seade jaoks halb vahetus.
Sõnumi tagasilükkamine ei ole tee seiskumine
MySQL 8.4 puhul kirjeldab sidepaketi dokumentatsioon liiga suure lause, rea või binaarlogi sündmuse tagasilükkamist kehtiva piiri vastu ning olulised võivad olla nii kliendi kui ka serveri piirid. See on tagasilükkamine andmebaasi kihis, mitte väide, et võrk peab kandma hiiglaslikku IP-paketti. Lugege tegelikku viga ja probleemse sõnumi kuju: paljudest väikestest ridadest koosnev suur tulemus on erinev juhtum kui üks tohutu rida, ja need ebaõnnestuvad erinevalt.
MariaDB paigaldused vajavad oma versiooni dokumenteeritud piire ja diagnostikat. MySQL-i vaikeväärtuste kopeerimine MariaDB-le on lisasammudega oletamine.
Kuidas tee tõend tegelikult välja näeb
Tee suuruse probleemil on oma sõrmejälg: korratav suurusest sõltuv transporditõrge kindlal marsruudil ja aadresside perekonnas, kus tunneli üldkulud on mängus ja avastamise tagasiside käitub nii, nagu tee lubab. Ainuüksi aegumine ei erista seda aeglasest päringust, draiveri veast ega serveripoolsest piirist, ja aegumise käsitlemine MTU probleemide tõendina saadab teid kindlalt valesse kihti.
Kui te teed testite, hoidke sihtkoht, konto ja töökoormus muutumatuna, et ainus muutuja oleks suurus, mida uurite. Test, mille käigus muutus kolm asja, ei ütle teile, milline neist oli oluline.
Muutke ühte dokumenteeritud muutujat ja registreerige see
Hoidke sihtkoht, konto, pakkuja ja töökoormus muutumatuna, registreerige algne väärtus, rakendage üks toetatud muudatus ja registreerige tulemus. Väiksem seade, mis teeb ühe testi edukaks, on kasulik tõend selle testitud virna kohta; see ei ole universaalne optimum ega tuvasta, mis põhjustas algse tõrke. Need on erinevad väited ja ainult esimest toetab üks katse.
Lahendage tuvastatud piir selle enda kihis ja seejärel märkige, milline kiht see oli. Märkus on see, mis takistab järgmisel inimesel draiverit seadistada, sest tee oli probleem.