Oracle-seta féll yfir VPN? Athugaðu keepalive-lögin
Hljóðlát vinna í gagnagrunninum getur lifað af óvirkt netflæði. Farðu í gegnum socket-rofann, sjálfgefin kjarnagildi og Oracle Net stillinguna í réttri röð.
Tuttugu og fimm mínútur af gagnlegri vinnu í gagnagrunninum skila næstum engri úttak, og frá hverju tæki á leiðinni virðist það flæði óvirkt. Óvirkt ástand er einmitt það sem er tekið. Skýrslan eftir á hefur alltaf sömu lögun: fyrirspurnin var í gangi, svo hvarf setan, og niðurstaðan kom aldrei.
Fjórar athuganir ákvarða hvort hljóðlát seta lifi af, og þær fara frá socketnum og út. Gerðu þær í röð, því hver þeirra gerir ráð fyrir að fyrra lagið sé að sinna sínu.
Hvaða flæði verður hljóðlátt
Tengingin sem skiptir máli er sú sem flytur gagnagrunnsumferðina, auðkennd af eigin vistföngum og pörtum. Ekkert annað endurnýjar hana. Ping á gátt, önnur SQL-tenging frá sama hýsli og eigin hjartsláttur tunnelsins eru aðskilin flæði með aðskilið ástand á hverju tæki sem fylgist með þeim.
ss -tio dst 10.60.4.20
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
Socket-listinn sýnir tímamæla og biðröðarástand fyrir lifandi tenginguna, sem segir meira en próf á aðkomu. sysctl-gildin eru sjálfgefin kjarnagildi fyrir keepalive-hegðun, og næsti kafli útskýrir hvers vegna þau gætu aldrei átt við setuna þína. Sjálfgefið gildi sem kviknar aldrei er óaðgreinanlegt frá engu sjálfgefnu gildi.
Skrifaðu niður vistföngin, portin og viðmótið sem tengingin notar. Þegar seta deyr eru það þessar upplýsingar sem gera þér kleift að spyrja rétta tækið hvað það gerði, í stað þess að spyrja hvort netið væri uppi.
Hvort óvirknistefnan rennur út eða takmarkar
Tvær stefnur framkalla sömu einkenni og krefjast gagnstæðra viðbragða. Óvirknitímamörk fjarlægja ástand sem hæft umferð gæti hafa endurnýjað, og keepalive getur komið í veg fyrir það. Algjör setutakmörk fjarlægja flæðið eftir fastan tíma óháð virkni, og ekkert keepalive breytir því.
Spyrðu eiganda hvers millistöðvar hvorri þeirra það innleiðir. Eldveggur, NAT-tæki, hleðsludreifir og skýjagátt geta öll haldið ástandi, og þau þurfa ekki að vera sammála. Það þrengsta setur frestinn sem þú þarft að vinna.
Þessi aðgreining segir þér líka hvenær þú átt að hætta að stilla. Ef stefnan er algjör takmörk er rétta lausnin styttri vinnueining, endurtakanlegt verk eða samþykkt undantekning, og athugunin hér fyrir neðan mun bara staðfesta að keepalive hafi ekki breytt neinu.
Socket-rofinn bak við sjálfgefin Linux-gildi
Keepalive er valfrjálst fyrir hvern socket. Sjálfgefin kjarnagildi lýsa því hvernig prófanir hegða sér þegar socket hefur virkjað kerfið, og þau virkja það ekki fyrir fyrirliggjandi tengingar. Forrit sem biður aldrei um það fær engar prófanir, hvað sem sysctl-gildin segja.
Þess vegna breytir það engu fyrir gagnagrunnsbiðlara að hækka tölurnar eitt og sér. Biðlarasafnið eða forritið verður að virkja kerfið, og þar sem stakkurinn býður stýringar fyrir hverja tengingu vinnur afmarkað gildi betur en breyting á öllum hýslinum sem hefur áhrif á ótengda þjónustu.
Bilið upp að fyrstu prófun er heldur ekki fyrirspurnartímamörk. Heilbrigð tenging er hljóðlát milli prófana, og dautt jafningja er þekkt eftir millibili og fjölda prófana. Að lesa þessi þrjú gildi sem eitt tímamark er hvernig fólk lendir í stillingum sem greina bilun annaðhvort allt of seint eða allt of fljótt. Þau stýra greiningu, ekki þolinmæði forritsins.
EXPIRE_TIME er stilling gagnagrunns, ekki netlagfæring
Oracle Net býður eigið lífvirknið, stillt í virka sniðinu fyrir ferlið frekar en í handahófskenndri skrá sem skyldi heita eitthvað svipað. Gildið er gefið upp í mínútum.
SQLNET.EXPIRE_TIME = 5
Aðal tilgangur þess er greining dauðra tenginga á þjóninum, og á kerfum sem styðja bætta líkanið stillir það einnig TCP keepalive-hegðun fyrir þær tengingar. Það er gagnlegur eiginleiki: gagnagrunnslaginu getur komið fyrir prófunum án þess að biðja biðlarforritið um að breytast.
Dæmisgildið hér að ofan er samræmd ákvörðun gegn áætluðum fresti, ekki ráðlegging. Skjalfesta almenna leiðsögnin er lengra bil, og rétta talan fer eftir uppsettu útfærslunni, prófunarkostnaðinum sem þú ert tilbúin að taka og raunverulegum endurnýjunarreglum á leiðinni. Settu stillinguna í sniðið sem viðkomandi ferli les, og staðfestu að ferlið hafi tekið hana upp. Oracle skjalfestir staðsetningar sniðsins og greiningarhegðunina í færibreytuviðmiði.
Prófaðu hljóðláta bilið og skipuleggðu svo endurheimt
Leyfðu nýrri leyfðri tengingu að fara í gegnum hljóðlátt tímabil sem er lengra en fresturinn sem þú ert að reyna að vinna, og fylgstu með lífvirkniunferð og niðurstöðu forritsins. Ekki fanga farminnihald sem þú þarft ekki; tímamælar og tengingarástand svara spurningunni.
ss -tio dst 10.60.4.20
# after the quiet interval, same command
ls -l "$ORACLE_HOME/network/admin/sqlnet.ora"
Ef setan hverfur samt tilheyrir fresturinn tæki sem þú hefur ekki spurt enn, eða stefnan er algjör takmörk. Ef hún lifir af skaltu skrá hvaða lag breyttist svo næsta hljóðláta aðgerð endurtaki ekki rannsóknina.
Að lokum skaltu ákveða hvað gerist þegar tengingin dettur í raun, því lífvirkniaðgerðir minnka tíðnina og fjarlægja aldrei möguleikann. Komdu á skráða niðurstöðu gagnagrunnsaðgerðarinnar áður en þú sendir hana aftur: tap á svarinu sannar ekkert um hvort verkið var staðfest. Fyrir allt sem verður að lifa af að fartölva lokist eða tunnel endurræsist er verk í eigu þjónsins með varanlega niðurstöðu sterkari hönnunin, og keepalive er ekki skipuleggjandi.