Les consultes petites tornen, les grans es pengen o cauen, i el primer instint és que alguna cosa del paquet no quadra. Aquest instint sol ser encertat i gairebé sempre apunta a la capa equivocada. Tres paràmetres comparteixen la paraula paquet i mesuren tres coses sense relació: l'embalatge de transport d'un controlador de base de dades, el límit de missatges d'un servidor de base de dades i la unitat màxima de transmissió del camí IP. Ajustar-ne un per arreglar un símptoma causat per un altre és com un problema de cinc minuts es converteix en una setmana d'ajustaments. L'ordre de sota és el que m'ha costat menys temps.

Tres capes, una paraula compartida

Cada fila de sota és una unitat diferent amb un propietari diferent, i no se'n pot raonar cap a partir de les altres. Un missatge de base de dades pot abastar molts segments TCP i molts paquets IP, així que augmentar-ne la mida permesa no eixampla el camí, i reduir un paràmetre del controlador no és la mateixa operació que canviar l'MTU d'una interfície. La paraula apareix en tres fitxers de configuració diferents, i per això cercar-la retorna tres respostes sense relació. Llegeix primer el text de l'error i després decideix quin fitxer obrir.

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

Anota a quina capa pertany l'operació que falla abans d'obrir un fitxer de configuració. El text de l'error normalment ho diu, i el text de l'error és la part que la gent salta.

Identifica el proveïdor abans de canviar-ne el paràmetre

Per a SQL Server, anota l'aplicació, el nom del controlador o proveïdor, la versió i la configuració efectiva de la connexió. Un script de diagnòstic i una aplicació d'escriptori poden arribar al mateix servidor per proveïdors diferents, així que un paràmetre que ajuda un no demostra res sobre l'altre. Els valors per defecte dels proveïdors difereixen, i un camp de la cadena de connexió amb un nom semblant no és prova que cada proveïdor l'interpreti igual.

No canviïs un controlador mantingut per un de llegat només perquè una solució antiga feia servir la seva sintaxi. La documentació actual desaconsella desenvolupament nou sobre aquests components més antics, i heretar-ne les limitacions és un mal intercanvi per un sol paràmetre.

El rebuig d'un missatge no és una aturada del camí

A MySQL 8.4, la documentació dels paquets de comunicació descriu el rebuig d'una sentència, fila o esdeveniment de registre binari massa gran respecte del límit aplicable, i tant el límit del client com el del servidor poden importar. Això és un rebuig a la capa de base de dades, no una afirmació que la xarxa hagi de transportar un paquet IP gegant. Llegeix l'error real i la forma del missatge problemàtic: un resultat gran fet de moltes files petites és un cas diferent d'una sola fila enorme, i fallen de maneres diferents.

Les instal·lacions de MariaDB necessiten els límits i el diagnòstic documentats de la seva pròpia versió. Copiar els valors per defecte de MySQL a MariaDB és endevinar amb passos extra.

Com és de debò l'evidència del camí

Un problema de mida de camí té la seva pròpia empremta: una fallada de transport reproduïble i dependent de la mida en una ruta i família d'adreces concretes, amb la sobrecàrrega del túnel en joc i la retroalimentació de descoberta comportant-se com el camí permet. Un temps d'espera sol no el distingeix d'una consulta lenta, d'un error del controlador o d'un límit del servidor, i tractar un temps d'espera com a prova de problemes d'MTU et porta amb confiança a la capa equivocada.

Si proves el camí, mantén fixos la destinació, el compte i la càrrega de treball perquè l'única variable sigui la mida que sondeges. Una prova en què van canviar tres coses no et diu quina va importar.

Canvia una variable documentada i després anota-la

Mantén constants la destinació, el compte, el proveïdor i la càrrega de treball, anota el valor original, aplica un canvi admès i anota el resultat. Un paràmetre més petit que fa passar una prova és una evidència útil sobre aquesta pila provada; no és un òptim universal i no estableix què va causar la fallada original. Són afirmacions diferents, i només la primera està recolzada per un sol experiment.

Resol el límit identificat a la seva pròpia capa i després anota quina capa era. La nota és el que impedeix que la propera persona ajusti el controlador perquè el camí era el problema.

Articles relacionats