Oracle saioa VPN bidez galdu da? Egiaztatu keepalive geruzak
Datu-baseko lan isilak sare-fluxu inaktibo bat gaindi dezake. Ibili socket etengailua, kernelaren lehenetsitako balioak eta Oracle Net ezarpena orden egokian.
Hogeita bost minutu datu-baseko lan erabilgarrik ia irteerarik gabe igarotzen dira, eta bidean dauden gailu guztietatik fluxu hori inaktibo dirudi. Egoera inaktiboa da hain zuzen biltzen dena. Geroagoko txostenak beti du forma bera: kontsulta martxan zegoen, gero saioa desagertu egin zen, eta emaitza ez zen inoiz iritsi.
Lau egiaztapenek erabakitzen dute saio isil batek bizirik irauten duen, eta sockettik kanpora egiten dira. Egin itzazu ordenan, bakoitzak aurreko geruzak bere lana egiten duela suposatzen baitu.
Zein fluxu isiltzen da
Garrantzitsua den konexioa datu-baseko trafikoa daramana da, bere helbide eta portuek identifikatua. Besterik ez du freskatzen. Gateway batera bidalitako ping bat, host beretik egindako bigarren SQL konexio bat eta tunelaren beraren bihotz-taupada fluxu bereiziak dira, beren egoera bereizia dutenak jarraitzen dituen gailu bakoitzean.
ss -tio dst 10.60.4.20
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
Socketen zerrendak bizirik dagoen konexioaren tenporizadoreak eta ilara-egoera erakusten ditu, irisgarritasun-proba batek baino informazio gehiago emanez. sysctl balioak kernelaren lehenetsitakoak dira keepalive jokabiderako, eta hurrengo atalak azaltzen du zergatik agian ez zaizkion inoiz zure saioari aplikatuko. Inoiz pizten ez den lehenetsi bat ez da inongo lehenetsirengandik bereizten.
Idatzi konexioak erabiltzen dituen helbideak, portuak eta interfazea. Saio bat hiltzen denean, xehetasun horiek dira gailu egokiari zer egin zuen galdetzea ahalbidetzen dizutenak, sareak martxan zegoen ala ez galdetu beharrean.
Inaktibotasun-politika iraungitzen ala mugatzen da
Bi politikak sintoma bera sortzen dute eta kontrako erantzunak eskatzen dituzte. Inaktibotasun-denborak kanpo ezarritako trafikoak freska zezakeen egoera kentzen du, eta keepalive batek hori saihets dezake. Saio-muga absolutu batek fluxua denbora finko baten ondoren kentzen du aktibitatea edozein dela ere, eta inolako keepalivek ez du hori aldatzen.
Galdetu bitarteko bakoitzaren jabeari zein ezartzen duen. Suhorma batek, NAT gailu batek, karga-balantzaile batek eta hodeiko gateway batek egoera gorde dezakete guztiek, eta ez dute zertan bat etorri. Estuenak gainditu behar duzun epea ezartzen du.
Bereizketa horrek noiz utzi doitzen ere esaten dizu. Politika muga absolutua bada, irtenbide egokia lan-unitate laburragoa, berriro has daitekeen lana edo onartutako salbuespena da, eta beheko egiaztapenak keepaliveek ez zutela ezer aldatu baieztatuko du soilik.
Linux-en lehenetsien atzeko socket etengailua
Keepalive socket bakoitzeko hautazkoa da. Kernelaren lehenetsiek probeek mekanismoa gaitutako socketean nola jokatzen duten deskribatzen dute, eta ez dute mekanismoa gaitzen lehendik dauden konexioetarako. Inoiz eskatzen ez duen aplikazio batek ez du proberik jasotzen, sysctl balioek esan dezaketen edozein dela ere.
Horregatik, zenbakiak bakarrik igotzeak ez du ezer aldatzen datu-baseko bezero batentzat. Bezero-liburutegiak edo aplikazioak mekanismoa gaitu behar du, eta pilak konexio bakoitzeko kontrolak eskaintzen dituen lekuan, ezarpen mugatu batek host osoarentzako aldaketak baino gehiago balio du, erlaziorik gabeko zerbitzuei eragiten baitie.
Lehenengo probearen arteko tartea ere ez da kontsulta-denbora. Konexio osasuntsua isilik egoten da probeen artean, eta pare hila probeen tartearen eta kopuruaren arabera ezagutzen da. Hiru balio horiek denbora bakar gisa irakurtzeak jendea hutsegitea beranduegi edo presa handiz hautematen duten ezarpenetara eramaten du. Detekzioa kontrolatzen dute, ez aplikazioaren pazientzia.
EXPIRE_TIME datu-baseko ezarpena da, ez sare-konponketa
Oracle Net-ek bere bizitasun-mekanismoa eskaintzen du, prozesurako profil eraginkorrean konfiguratua eta ausaz antzeko izena duen fitxategi arbitrarioan beharrean. Balioa minututan adierazten da.
SQLNET.EXPIRE_TIME = 5
Haren helburu nagusia zerbitzari aldean konexio hilak hautematea da, eta eredu hobetua onartzen duten plataformetan TCP keepalive jokabidea ere doitzen du konexio horietarako. Propietate erabilgarria da: datu-base geruzak probeak antola ditzake bezero-aplikazioari aldatzeko eskatu gabe.
Goiko balio ilustratiboa suposatutako epe baten aurkako aukeraketa koordinatua da, ez gomendioa. Dokumentatutako orientabide orokorra tarte luzeagoa da, eta zenbaki egokia instalatutako ezarpenaren, onartzen duzun probe-kostuaren eta bidean dauden freskatze-araudi errealen araberakoa da. Jarri ezarpena dagokion prozesuak irakurtzen duen profilean, eta egiaztatu prozesuak jaso duela. Oracle-k profileen kokapenak eta detekzio-jokabidea dokumentatzen ditu bere parametro erreferentzian.
Probatu tarte isila, gero planifikatu berreskurapena
Utzi baimendutako konexio berri bat gainditu nahi duzun epea baino luzeagoa den tarte isil batetik, eta behatu bizitasun-trafikoa eta aplikazioaren emaitza. Ez kapturatu behar ez duzun karga-edukirik; tenporizadoreek eta konexio-egoerak erantzuten dute galdera.
ss -tio dst 10.60.4.20
# after the quiet interval, same command
ls -l "$ORACLE_HOME/network/admin/sqlnet.ora"
Saioa oraindik desagertzen bada, epea oraindik galdetu ez diozun gailu batena da, edo politika muga absolutua da. Bizirik irauten badu, idatzi zein geruza aldatu zen, hurrengo eragiketa isilak ikerketa errepika ez dezan.
Azkenik, erabaki konexioa benetan erortzen denean zer gertatzen den, bizitasun-egiaztapenek maiztasuna murrizten baitute eta ez dute inoiz aukera ezabatzen. Ezarri datu-baseko eragiketaren erregistratutako emaitza berriro bidali aurretik: erantzuna galtzeak ez du ezer frogatzen lana berretsi zen ala ez. Laptop bat ixtea edo tunel bat berrabiaraztea gainditu behar duen edozertarako, zerbitzariaren jabetzako lana emaitza iraunkorrarekin diseinu sendoagoa da, eta keepalive ez da planifikatzailea.