Mazi vaicājumi strādā, lieli neizdodas: kurš ir pakešu izmērs?
SQL Server draivera paketes, MySQL ziņojumu ierobežojumi un IP maršruta MTU ir dažādas vienības. No izmēra atkarīga kļūme nepadara tās savstarpēji aizstājamas.
Mazi vaicājumi atgriežas, lieli karājas vai nokrīt, un pirmā intuīcija ir, ka kaut kas nav kārtībā ar paketes izmēru. Šī intuīcija parasti ir pareiza un gandrīz vienmēr vērsta uz nepareizo slāni. Trīs iestatījumi dala vārdu pakete un mēra trīs nesaistītas lietas: datubāzes draivera transporta iepakojumu, datubāzes servera ziņojumu ierobežojumu un IP maršruta maksimālo pārraides vienību. Viena regulēšana, lai novērstu simptomu, ko izraisījis cits, ir ceļš, kā piecu minūšu problēma kļūst par nedēļu ilgu regulēšanu. Tālāk dotā secība man ir prasījusi vismazāk laika.
Trīs slāņi, viens kopīgs vārds
Katra rinda zemāk ir cita vienība ar citu īpašnieku, un par nevienu no tām nevar spriest, balstoties uz pārējām. Datubāzes ziņojums var aptvert daudzus TCP segmentus un daudzas IP paketes, tāpēc atļautā izmēra palielināšana nepaplašina maršrutu, un draivera iestatījuma samazināšana nav tā pati darbība kā saskarnes MTU maiņa. Vārds parādās trīs dažādos konfigurācijas failos, tāpēc tā meklēšana atgriež trīs nesaistītas atbildes. Vispirms izlasiet kļūdas tekstu, pēc tam izlemiet, kuru failu atvērt.
| 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 |
Pirms atverat konfigurācijas failu, pierakstiet, kuram slānim pieder neizdevusies darbība. Kļūdas teksts to parasti pasaka, un tieši šo daļu cilvēki izlaiž.
Pirms mainīt tā iestatījumu, identificējiet pakalpojumu sniedzēju
SQL Server gadījumā pierakstiet lietojumprogrammu, draivera vai pakalpojumu sniedzēja nosaukumu, versiju un faktisko savienojuma konfigurāciju. Diagnostikas skripts un galddatora lietojumprogramma var sasniegt vienu un to pašu serveri caur dažādiem pakalpojumu sniedzējiem, tāpēc iestatījums, kas palīdz vienam, neko nepierāda par otru. Pakalpojumu sniedzēju noklusējuma vērtības atšķiras, un līdzīgi nosaukts savienojuma virknes lauks nav pierādījums, ka katrs pakalpojumu sniedzējs to interpretē vienādi.
Neaizstājiet uzturētu draiveri ar vecāku tikai tāpēc, ka vecs risinājums izmantoja tā sintaksi. Pašreizējā dokumentācija neveicina jaunu izstrādi uz šiem vecākajiem komponentiem, un to ierobežojumu pārmantošana ir slikts darījums par vienu iestatījumu.
Ziņojuma noraidīšana nav maršruta apstāšanās
MySQL 8.4 dokumentācijā par sakaru paketi aprakstīta pārāk liela vaicājuma, rindas vai binārā žurnāla notikuma noraidīšana pret piemērojamo ierobežojumu, un var būt svarīgi gan klienta, gan servera ierobežojumi. Tā ir noraidīšana datubāzes slānī, nevis apgalvojums, ka tīklam jāpārvadā milzīga IP pakete. Izlasiet faktisko kļūdu un problemātiskā ziņojuma formu: liels rezultāts no daudzām mazām rindām ir cits gadījums nekā viena milzīga rinda, un tie neizdodas atšķirīgi.
MariaDB instalācijām ir vajadzīgi savas versijas dokumentētie ierobežojumi un diagnostika. MySQL noklusējuma vērtību kopēšana uz MariaDB ir minēšana ar papildu soļiem.
Kā patiesībā izskatās maršruta pierādījumi
Maršruta izmēra problēmai ir savs pirkstu nospiedums: atkārtojama no izmēra atkarīga transporta kļūme noteiktā maršrutā un adrešu saimē, kur iesaistīts tuneļa papildu apjoms un atklāšanas atgriezeniskā saite uzvedas tā, kā maršruts pieļauj. Viens noildze vien to neatšķir no lēna vaicājuma, draivera kļūdas vai servera puses ierobežojuma, un noildzi uzskatīt par MTU problēmu pierādījumu nosūta jūs ar pārliecību uz nepareizo slāni.
Ja tomēr pārbaudāt maršrutu, turiet galamērķi, kontu un darba slodzi fiksētus, lai vienīgais mainīgais būtu izmērs, ko pārbaudāt. Tests, kurā mainījās trīs lietas, neko nepasaka par to, kura bija svarīga.
Mainiet vienu dokumentētu mainīgo un pēc tam to pierakstiet
Turiet galamērķi, kontu, pakalpojumu sniedzēju un darba slodzi nemainīgus, pierakstiet sākotnējo vērtību, piemērojiet vienu atbalstītu izmaiņu un pierakstiet rezultātu. Mazāks iestatījums, kas ļauj vienam testam izdoties, ir noderīgs pierādījums par šo pārbaudīto steku; tas nav universāls optimums un nenosaka, kas izraisīja sākotnējo kļūmi. Tie ir dažādi apgalvojumi, un tikai pirmo pamato viens eksperiments.
Atrisiniet identificēto ierobežojumu tā paša slānī, pēc tam pierakstiet, kurš slānis tas bija. Tieši pieraksts attur nākamo cilvēku no draivera regulēšanas, jo problēma bija maršruts.