Mažos užklausos grįžta, didelės pakimba arba nutrūksta, ir pirmoji nuojauta yra, kad kažkas negerai su paketo dydžiu. Ta nuojauta dažniausiai teisinga ir beveik visada nukreipta į netinkamą sluoksnį. Trys nustatymai dalijasi žodžiu paketas ir matuoja tris nesusijusius dalykus: duomenų bazės tvarkyklės transportavimo pakavimą, duomenų bazės serverio pranešimų ribą ir IP maršruto didžiausią perdavimo vienetą. Vieno reguliavimas, siekiant ištaisyti kito sukeltą simptomą, yra kelias, kuriuo penkių minučių problema tampa savaitės derinimu. Toliau pateikta tvarka man kainavo mažiausiai laiko.

Trys sluoksniai, vienas bendras žodis

Kiekviena eilutė žemiau yra skirtingas vienetas su skirtingu savininku, ir apie nė vieną negalima samprotauti remiantis kitais. Duomenų bazės pranešimas gali apimti daug TCP segmentų ir daug IP paketų, todėl leistino dydžio didinimas nepadidina maršruto, o tvarkyklės nustatymo mažinimas nėra ta pati operacija kaip sąsajos MTU keitimas. Žodis pasirodo trijuose skirtinguose konfigūracijos failuose, todėl jo paieška grąžina tris nesusijusius atsakymus. Pirmiausia perskaitykite klaidos tekstą, tada nuspręskite, kurį failą atidaryti.

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

Prieš atidarydami konfigūracijos failą, užsirašykite, kuriam sluoksniui priklauso nepavykusi operacija. Klaidos tekstas paprastai tai pasako, ir būtent šią dalį žmonės praleidžia.

Prieš keisdami jo nustatymą, nustatykite teikėją

Jei naudojate SQL Server, užrašykite programą, tvarkyklės arba teikėjo pavadinimą, versiją ir efektyvią ryšio konfigūraciją. Diagnostikos scenarijus ir darbalaukio programa gali pasiekti tą patį serverį per skirtingus teikėjus, todėl nustatymas, padedantis vienam, nieko neįrodo apie kitą. Teikėjų numatytosios reikšmės skiriasi, o panašiai pavadintas ryšio eilutės laukas nėra įrodymas, kad kiekvienas teikėjas jį interpretuoja vienodai.

Nekeiskite prižiūrimos tvarkyklės į senesnę vien todėl, kad senas sprendimas naudojo jos sintaksę. Dabartinė dokumentacija nerekomenduoja naujos plėtros su tais senesniais komponentais, o jų apribojimų paveldėjimas yra blogas mainas už vieną nustatymą.

Pranešimo atmetimas nėra maršruto sustojimas

MySQL 8.4 dokumentuose apie ryšio paketus aprašomas per didelio sakinio, eilutės ar dvejetainio žurnalo įvykio atmetimas pagal taikomą ribą, ir gali būti svarbios tiek kliento, tiek serverio ribos. Tai atmetimas duomenų bazės sluoksnyje, o ne teiginys, kad tinklas turi pernešti milžinišką IP paketą. Perskaitykite tikrąją klaidą ir probleminio pranešimo formą: didelis rezultatas iš daug mažų eilučių yra kitas atvejis nei viena didžiulė eilutė, ir jie nepavyksta skirtingai.

MariaDB diegimams reikia jų pačių versijos dokumentuotų ribų ir diagnostikos. MySQL numatytųjų reikšmių kopijavimas į MariaDB yra spėjimas su papildomais žingsniais.

Kaip iš tikrųjų atrodo maršruto įrodymai

Maršruto dydžio problema turi savo pirštų atspaudą: pakartojamas nuo dydžio priklausantis transportavimo gedimas tam tikrame maršrute ir adresų šeimoje, kai tunelio sąnaudos įtraukiamos ir atradimo grįžtamasis ryšys elgiasi taip, kaip maršrutas leidžia. Vien laiko skirtasis laikas neatskiria jos nuo lėtos užklausos, tvarkyklės klaidos ar serverio pusės ribos, ir laikyti laiko skirtąjį laiką MTU problemų įrodymu nusiunčia jus užtikrintai į netinkamą sluoksnį.

Jei vis dėlto testuojate maršrutą, laikykite paskirties vietą, paskyrą ir darbo krūvį pastovius, kad vienintelis kintamasis būtų dydis, kurį tikrinate. Testas, kuriame pasikeitė trys dalykai, nieko nepasako apie tai, kuris buvo svarbus.

Pakeiskite vieną dokumentuotą kintamąjį, tada jį užrašykite

Laikykite paskirties vietą, paskyrą, teikėją ir darbo krūvį pastovius, užrašykite pradinę reikšmę, pritaikykite vieną palaikomą pakeitimą ir užrašykite rezultatą. Mažesnis nustatymas, leidžiantis vienam testui pavykti, yra naudingas įrodymas apie tą testuotą krūvą; tai nėra universalus optimalumas ir nenustato, kas sukėlė pradinį gedimą. Tai skirtingi teiginiai, ir tik pirmąjį pagrindžia vienas eksperimentas.

Išspręskite nustatytą ribą jos pačios sluoksnyje, tada užrašykite, kuris sluoksnis tai buvo. Būtent užrašas sutrukdo kitam žmogui derinti tvarkyklę, nes problema buvo maršrutas.

Susiję straipsniai