Дваесет и пет минути корисна работа со базата речиси ништо не испечатуваат, а од секој уред на патеката тој тек изгледа неактивен. Неактивната состојба е токму она што се собира. Извештајот потоа секогаш има иста форма: барањето работеше, потоа сесијата исчезна, а резултатот никогаш не пристигна.

Четири проверки одлучуваат дали тива сесија преживува, и тие одат од приклучокот кон надвор. Направете ги по ред, бидејќи секоја претпоставува дека претходниот слој ја врши својата работа.

Кој тек стивнува

Важна е врската што го пренесува сообраќајот на базата, препознаена по сопствените адреси и порти. Ништо друго не ја освежува. Пинг до порта, втора SQL врска од истиот домаќин и сопствениот отчукувања на тунелот се одделни текови со одделна состојба на секој уред што ги следи.

ss -tio dst 10.60.4.20
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes

Списокот на приклучоци ги прикажува тајмерите и состојбата на редот за живата врска, што кажува повеќе од тест на достапност. Вредностите sysctl се стандардни вредности на кернелот за однесувањето keepalive, а следниот дел објаснува зошто можеби никогаш нема да се применат на вашата сесија. Стандардна вредност што никогаш не се активира е неразлична од никаква стандардна вредност.

Запишете ги адресите, портите и интерфејсот што ги користи врската. Кога сесијата умира, тие детали ви овозможуваат да го прашате правилниот уред што направил, наместо да прашате дали мрежата била достапна.

Дали политиката на мирување истекува или ограничува

Две политики го даваат истиот симптом и бараат спротивни одговори. Временско ограничување на мирување отстранува состојба што квалификуваниот сообраќај можел да ја освежи, а keepalive може да го спречи тоа. Апсолутно ограничување на сесијата го отстранува текот по фиксно траење независно од активноста, и ниту еден keepalive не го менува тоа.

Прашајте го сопственикот на секој посредник која од двете ја применува. Заштитен ѕид, NAT уред, балансер на оптоварување и облачна порта можат сите да држат состојба, и не мора да се согласат. Најтесниот го одредува рокот што треба да го победите.

Таа разлика ви кажува и кога да престанете да прилагодувате. Ако политиката е апсолутно ограничување, правилното решение е пократка работна единица, работа што може да се продолжи или одобрен исклучок, а проверката подолу само ќе потврди дека keepalive не промениле ништо.

Прекинувачот на приклучокот зад стандардните вредности на Linux

Keepalive е изборен по приклучок. Стандардните вредности на кернелот опишуваат како се однесуваат сондите откако приклучокот ќе го активира механизмот, и не го активираат за постоечките врски. Апликација што никогаш не го бара не добива никакви сонди, што и да велат вредностите sysctl.

Затоа само зголемувањето на броевите не менува ништо за клиент на базата. Механизмот мора да го активира клиентската библиотека или апликацијата, а каде стекот нуди контроли по врска, ограничената поставка победува промена за целиот домаќин што погодува неповрзани услуги.

Интервалот до првата сонда исто така не е временско ограничување на барање. Здравата врска останува тивка помеѓу сондите, а мртов партнер се препознава според интервалот и бројот на сондите. Читањето на тие три вредности како едно ограничување води до поставки што квар откриваат или премногу доцна или премногу нагло. Тие го контролираат откривањето, не трпението на апликацијата.

EXPIRE_TIME е поставка на базата, не мрежен поправка

Oracle Net нуди сопствен механизам на живост, конфигуриран во ефективниот профил на процесот, а не во произволна датотека што случајно има слично име. Вредноста се изразува во минути.

SQLNET.EXPIRE_TIME = 5

Неговата главна цел е откривање на мртви врски на серверот, а на платформите што го поддржуваат подобрениот модел го прилагодува и однесувањето на TCP keepalive за тие врски. Тоа е корисно својство: слојот на базата може да обезбеди сонди без да бара клиентската апликација да се менува.

Горната илустративна вредност е усогласен избор спрема претпоставен рок, не препорака. Документираната општа препорака е подолг интервал, а точниот број зависи од инсталираната имплементација, прифатениот трошок на сонди и вистинските правила за освежување на патеката. Ставете ја поставката во профилот што го чита соодветниот процес и потврдете дека процесот ја презел. Oracle ги документира локациите на профилот и однесувањето на откривање во својот референтен преглед на параметри.

Тестирајте го тивкиот интервал и потоа планирајте опоравување

Пуштете нова дозволена врска низ тивок период подолг од рокот што се обидувате да го победите и набљудувајте го сообраќајот на живост и резултатот на апликацијата. Не снимајте содржина на товар што не ви треба; тајмерите и состојбата на врската одговараат на прашањето.

ss -tio dst 10.60.4.20
# after the quiet interval, same command
ls -l "$ORACLE_HOME/network/admin/sqlnet.ora"

Ако сесијата сепак исчезне, рокот и припаѓа на уред што сѐ уште не сте го прашале, или политиката е апсолутно ограничување. Ако преживее, забележете кој слој се смени за следната тивка операција да не ја повторува истрагата.

На крајот одлучете што се случува кога врската навистина паѓа, бидејќи проверките на живост ја намалуваат честотата и никогаш не ја отстрануваат можноста. Утврдете го забележаниот исход на операцијата на базата пред повторно да ја испратите: губењето на одговорот не докажува ништо за тоа дали работата е потврдена. За сѐ што мора да го преживее затворањето на преносен сметач или рестартирањето на тунел, работа во сопственост на серверот со траен резултат е посилниот дизајн, а keepalive не е планер.

Поврзани статии