Kontaktovať podporu

Odpovedáme e-mailom, zvyčajne do dvoch dní.

Google reCAPTCHA kontroluje toto podanie na ochranu pred zneužitím; údaje sa prenášajú spoločnosti Google. Skript sa načíta až pri otvorení tohto formulára.

← Všetky príspevky

Súbor s 870 MB v tmpfs a následný reštart

O obsahu a jeho overovaní

V tomto článku

Dňa 28. augusta o 19:35 som rozbalil jeden deň prístupového protokolu do /tmp na prečítanie dvoch dní pri jednom prechode. O 19:44 sa stroj reštartoval.

čo stroj má a čo zabral jeden súbor 3 794 MB pamäte, z ktorej /tmp môže zabrať 1 900 870 MB zapísaných doň o 19:35 19:35 — deň protokolu rozbalený do /tmp na čítanie dvoch dní naraz 19:44 — SSH prestáva odpovedať, webu to trvá 11 s namiesto 0,1 s 19:47 — stroj je späť, čas prevádzky 0 minút MariaDB sa spúšťa s obnovou po páde: vypnutie nebolo čisté žurnál neprežije reštart, takže to nemožno dokázať — iba datovať

Vlastnosť, ktorá sa neoverila

Na tomto stroji /tmp je tmpfs. Je to pamäť. df ukazuje 1,9 GB voľných a nehovorí vôbec nič o pôvode tohto priestoru, pričom stroj má celkom 3 794 MB.

Súbor s 870 MB teda zabral štvrtinu pamäte malého servera, ktorý zároveň poskytoval web a vykonával cudziu testovaciu úlohu. O deväť minút SSH prestalo prijímať spojenia, web odpovedal za 11 sekúnd namiesto 0,1 a krátko potom bol späť s časom prevádzky nula minút.

Čo sa dá a nedá povedať

MariaDB sa spustila s obnovou po páde, čo znamená, že vypnutie nebolo čisté. Okrem toho je poctivou odpoveďou, že sa to nedá dokázať: žurnál na tomto stroji je nestály, neprežije teda reštart a neexistuje kern.log s riadkom o nedostatku pamäte. Dôkazom je časová značka deväť minút pred udalosťou a súbor na nesprávnom mieste.

Oplatí sa to zapísať v tejto podobe, nie ako záver. «Zaplnil pamäť a jadro to vzdalo» je vierohodný príbeh. Nie je zmeraný a rozdiel tu znamená viac, než by znamenala istota.

Aké boli škody

Žiadne, ktoré by sa dali nájsť. CHECK TABLE na piatich najdôležitejších tabuľkách vrátilo OK, počty riadkov sa nezmenili, počítanie v ten deň ďalej zaznamenávalo a všetkých šestnásť plánovaných úloh zostalo neporušených. Web znovu odpovedal za 0,14 sekundy.

Jedna vec sa stratila: dlho bežiaca úloha patriaca inej relácii na tom istom stroji. S touto prácou vôbec nesúvisela a padla spolu so všetkým ostatným, čo je tá časť výpadku, ktorú žiadna miestna kontrola nehlási.

Pravidlo, ktoré z toho vyplynulo

Tunajšie protokoly majú 700 až 900 MB denne. Rozbalenie jedného do /tmp znamená dať štvrtinu pamäte stroja niekam, čo vyzerá ako disk a správa sa ako RAM.

Veľké priebežné súbory patria do /var/tmp alebo domovského adresára, oboje je na disku. Ešte lepšie je vôbec ich nerozbaľovať: zcat -f file.gz | awk ... číta prúdom a nepotrebuje cieľ. Každé meranie v nasledujúcich príspevkoch sa vykonalo takto.

Čo sa dá zovšeobecniť

Súborový systém hlási, koľko miesta má. Nehlási, z čoho je miesto vytvorené, a tieto dve otázky majú rôzne odpovede práve na systémoch, kde na tom záleží najviac.

Kontrola má jeden riadok a vynechala sa, pretože súbor bol «dočasný». Dočasný naozaj bol. Bola to nesprávna vlastnosť, o ktorej sa uvažovalo.

Reklama