Klein navrae keer terug, groot enes hang of val weg, en die eerste instink is dat iets met die pakketgrootte verkeerd is. Daardie instink is gewoonlik reg en byna altyd op die verkeerde laag gemik. Drie instellings deel die woord pakket en meet drie onverwante dinge: die vervoerverpakking van 'n databasisdrywer, die boodskaplimiet van 'n databasisbediener en die maksimum transmissie-eenheid van die IP-roete. Om een aan te pas om 'n simptoom te genees wat deur 'n ander veroorsaak word, is hoe 'n vyf-minute-probleem 'n week se instel word. Die volgorde hieronder is die een wat my die minste tyd gekos het.

Drie lae, een gedeelde woord

Elke ry hieronder is 'n ander eenheid met 'n ander eienaar, en oor geeneen daarvan kan uit die ander geredeneer word nie. 'n Databasisboodskap kan oor baie TCP-segmente en baie IP-pakkette strek, so om die toegelate grootte daarvan te vergroot maak nie die roete groter nie, en om 'n drywerinstelling te verklein is nie dieselfde handeling as om 'n koppelvlak-MTU te verander nie. Die woord kom in drie verskillende konfigurasielêers voor, en daarom lewer 'n soektog daarna drie onverwante antwoorde. Lees eers die foutteks en besluit dan watter lêer om oop te maak.

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

Skryf neer aan watter laag die mislukte handeling behoort voordat jy 'n konfigurasielêer oopmaak. Die foutteks sê dit gewoonlik, en die foutteks is die deel wat mense oorslaan.

Identifiseer die verskaffer voordat jy sy instelling verander

Vir SQL Server, teken die toepassing, die drywer- of verskaffernaam, die weergawe en die effektiewe verbindingskonfigurasie aan. 'n Diagnostiese skrip en 'n lessenaartoepassing kan dieselfde bediener deur verskillende verskaffers bereik, so 'n instelling wat een help bewys niks oor die ander nie. Verskafferverstektes verskil, en 'n soortgelyk benoemde verbindingsstringveld is nie bewys dat elke verskaffer dit dieselfde vertolk nie.

Moet nie 'n onderhoude drywer vir 'n ouer een ruil net omdat 'n ou oplossing sy sintaksis gebruik het nie. Huidige dokumentasie ontmoedig nuwe ontwikkeling teen daardie ouer komponente, en om hul beperkings te erf is 'n slegte ruil vir een instelling.

Boodskapverwerping is nie 'n roete-onderbreking nie

Op MySQL 8.4 beskryf die dokumentasie vir kommunikasiepakkette dat 'n oorgrote stelling, ry of binêre-log-gebeurtenis teen die toepaslike limiet verwerp word, en beide kliënt- en bedienerlimiete kan saak maak. Dit is 'n verwerping op die databasislaag, nie 'n verklaring dat die netwerk 'n enorme IP-pakket moet dra nie. Lees die werklike fout en die vorm van die oortredende boodskap: 'n groot resultaat uit baie klein rye is 'n ander geval as een enorme ry, en hulle misluk anders.

MariaDB-installasies het hul eie weergawe se gedokumenteerde limiete en diagnostiek nodig. Om MySQL-verstekke op MariaDB te kopieer is raai met ekstra stappe.

Hoe roetebewyse werklik lyk

'n Roetegrootteprobleem het sy eie vingerafdruk: 'n herhaalbare grootte-afhanklike vervoerfout langs een bepaalde roete en adresfamilie, met die tonnel se oorhoofse koste in die spel en ontdekkings terugvoer wat optree soos die roete toelaat. 'n Time-out alleen onderskei dit nie van 'n stadige navraag, 'n drywerfout of 'n bedienerkantlimiet nie, en om 'n time-out as bewys van MTU-probleme te behandel stuur jou met selfvertroue na die verkeerde laag.

As jy wel die roete toets, hou die bestemming, rekening en werklading vas sodat die enigste veranderlike die grootte is wat jy ondersoek. 'n Toets waarin drie dinge verander het, sê niks oor watter een saak gemaak het nie.

Verander een gedokumenteerde veranderlike en teken dit dan aan

Hou die bestemming, rekening, verskaffer en werklading konstant, teken die oorspronklike waarde aan, pas een ondersteunde verandering toe en teken die resultaat aan. 'n Kleiner instelling wat een toets laat slaag, is nuttige bewys oor daardie getoetste stapel; dit is nie 'n universele optimum nie en dit bepaal nie wat die oorspronklike fout veroorsaak het nie. Dit is verskillende bewerings, en slegs die eerste word deur 'n enkele eksperiment ondersteun.

Los die geïdentifiseerde limiet op sy eie laag op en noteer dan watter laag dit was. Die nota is wat die volgende persoon daarvan weerhou om die drywer in te stel omdat die roete die probleem was.

Verwante artikels