Малите барања работат, големите не успеваат: која големина на пакет е тоа?
Пакувањата на драјверот за SQL Server, ограничувањата на пораките на MySQL и MTU на IP патека се различни единици. Неуспехот зависен од големина не ги прави заменливи.
Малите барања се враќаат, големите висат или паѓаат, и првиот инстинкт е дека нешто не е во ред со големината на пакетот. Тој инстинкт обично е точен и речиси секогаш е насочен кон погрешниот слој. Три поставки го делат зборот пакет и мерат три неповрзани работи: транспортното пакување на драјвер за база на податоци, ограничувањето на пораки на сервер за база на податоци и максималната преносна единица на IP патеката. Прилагодувањето на едната за да се поправи симптом предизвикан од другата е патот на кој проблем од пет минути станува недела на прилагодување. Редоследот подолу е оној што ме чинеше најмалку време.
Три слоја, еден заеднички збор
Секој ред подолу е различна единица со различен сопственик и за ниту една не може да се заклучува од другите. Пораката на базата на податоци може да опфати многу TCP сегменти и многу IP пакети, затоа зголемувањето на нејзината дозволена големина не ја шири патеката, а намалувањето на поставка на драјвер не е истата операција како менување на MTU на интерфејс. Зборот се појавува во три различни конфигурациски датотеки, затоа пребарувањето за него враќа три неповрзани одговори. Прво прочитајте го текстот на грешката, потоа одлучете која датотека да ја отворите.
| 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 |
Запишете на кој слој му припаѓа неуспешната операција пред да отворите конфигурациска датотека. Текстот на грешката обично го кажува тоа, а токму тој дел луѓето го прескокнуваат.
Идентификувајте го провајдерот пред да ја смените неговата поставка
За SQL Server запишете ја апликацијата, името на драјверот или провајдерот, верзијата и ефективната конфигурација на врската. Дијагностичка скрипта и десктоп апликација можат да стигнат до истиот сервер преку различни провајдери, затоа поставка што помага на едниот не докажува ништо за другиот. Стандардните вредности на провајдерите се разликуваат, а поле во низата за поврзување со слично име не е доказ дека секој провајдер го толкува на ист начин.
Не заменувајте одржуван драјвер со стар само затоа што старо заобиколно решение го користело неговиот синтаксис. Актуелната документација не го охрабрува новиот развој врз тие постари компоненти, а наследувањето на нивните ограничувања е лоша зделка за една поставка.
Одбивањето на порака не е застој на патеката
Во MySQL 8.4, документацијата за комуникацискиот пакет опишува одбивање на преголема наредба, ред или настан од бинарен дневник спрема применливото ограничување, и може да бидат важни и клиентското и серверското ограничување. Тоа е одбивање на слојот на базата на податоци, не тврдење дека мрежата мора да носи огромен IP пакет. Прочитајте ја вистинската грешка и формата на проблематичната порака: голем резултат составен од многу мали редови е различен случај од еден огромен ред и тие не успеваат на различен начин.
Инсталациите на MariaDB бараат документирани ограничувања и дијагностика на сопствената верзија. Копирањето на стандардните вредности на MySQL врз MariaDB е погодување со дополнителни чекори.
Како навистина изгледа доказот за патеката
Проблемот со големината на патеката има свој отпечаток: повторлив транспортен неуспех зависен од големината по одредена рута и фамилија адреси, со трошокот на тунелот во игра и повратната информација за откривање однесувајќи се како што патеката дозволува. Само истекувањето на времето не го разликува од бавно барање, грешка во драјверот или серверско ограничување, и третирањето на истекувањето на времето како доказ за MTU проблеми ве испраќа со сигурност на погрешниот слој.
Ако ја тестирате патеката, држете ја дестинацијата, сметката и работното оптоварување фиксни за единствената променлива да биде големината што ја проверувате. Тест во кој се смениле три работи не ви кажува ништо за тоа која била важна.
Сменете една документирана променлива, потоа запишете ја
Држете ги дестинацијата, сметката, провајдерот и работното оптоварување константни, запишете ја оригиналната вредност, примените една поддржана промена и запишете го резултатот. Помала поставка што прави еден тест да успее е корисен доказ за тој тестиран стек; таа не е универзален оптимум и не утврдува што го предизвикало оригиналниот неуспех. Тоа се различни тврдења и само првото е поддржано од еден експеримент.
Решете го идентификуваното ограничување на неговиот сопствен слој, потоа забележете кој слој беше. Токму белешката го спречува следниот човек да го прилагодува драјверот затоа што патеката беше проблемот.