Aplikacija se sesuje: kako najti vzrok
Vsaka napaka ima zaporedje korakov, ki jo sproži. Dokler ga ne poznaš, ne popravljaš — ugibaš. Spodaj je postopek, ki pripelje do vrstice.
Zberi dokaze, preden karkoli spremeniš
Prvi nagon je nekaj popraviti. Ne. Najprej zberi:
- točen čas dogodka
- kaj je uporabnik delal tik pred tem
- sporočilo napake in sled klicev
- ali se zgodi vsem ali le nekaterim
- ali se je kaj nameščalo v zadnjih dneh
Če spremeniš kodo, preden to zbereš, boš izgubil edino sled — in napaka se bo vrnila takrat, ko boš najmanj pripravljen.
Kaj ti pove sled klicev
Sled klicev je seznam funkcij, ki so se klicale ena za drugo. Beri jo od zgoraj navzdol: prva vrstica je mesto, kjer se je ustavilo, spodnje pa pot, po kateri je prišlo tja.
Zanimata te dve stvari: prva vrstica, ki pripada tvoji kodi (ne knjižnici), in sporočilo napake. To dvoje običajno zadostuje za zožitev na modul.
Ponovi napako
Brez ponovitve ni zanesljivega popravka. Poskusi po vrsti:
- Isti podatki Ponovi z natanko istim vnosom, ne s podobnim.
- Isti uporabnik Vloge in pravice pogosto spremenijo pot skozi kodo.
- Isto okolje Različica strežnika, količina podatkov, obremenitev.
- Isti čas Nekatere napake se pojavijo le ob polnoči ali ob prehodu na poletni čas.
Uhajanje pomnilnika
Znak: aplikacija dela po zagonu, po nekaj urah pa se upočasni in obstane. Vzrok je nekaj, kar se kopiči — poslušalci dogodkov, časovniki, odprte povezave do baze, predpomnilnik brez omejitve.
Meritev je preprosta: spremljaj porabo pomnilnika skozi dan. Če črta samo raste in nikoli ne pade, je uhajanje potrjeno.
Kdaj ni kriva koda
- poln disk ali pomnilnik na strežniku
- presežene omejitve pri zunanji storitvi
- potekla potrdila ali ključi
- sprememba pri dobavitelju podatkov, o kateri ni obvestil
Zato vedno pogledamo tudi dnevnike strežnika, ne le aplikacije.
Zakaj vsak popravek sodi s preizkusom
Ker napaka, ki se je enkrat pojavila, ni vezana na dan, ampak na pogoje. Preizkus, ki te pogoje zapiše, prepreči, da bi se ista okvara tiho vrnila ob naslednji spremembi. To je razlika med aplikacijo, ki se s časom umirja, in tisto, ki postaja vse bolj nepredvidljiva.
Pogosta vprašanja
Napaka se pojavi samo pri eni stranki. Kje naj začnem?
Pri njenih podatkih. Najpogosteje gre za poseben znak, prazno polje ali zapis, ki je nastal pred spremembo strukture.
Nimamo dnevnikov. Kaj zdaj?
Najprej jih vklopimo — brez njih je vsako iskanje ugibanje. Že nekaj dni zapisov običajno zadostuje.
Ali je ponovni zagon rešitev?
Kratkoročno pomaga pri uhajanju pomnilnika, a vzroka ne odpravi. Kot rešitev velja samo, dokler ne najdemo pravega razloga.
Pošlji sled napake
S sledjo klicev in dostopom do dnevnika običajno v enem dnevu povemo, kaj je vzrok.
Prijavi napako