Kontakt z pomocą

Odpowiadamy e-mailem, zwykle w ciągu dwóch dni.

Google reCAPTCHA sprawdza to zgłoszenie pod kątem nadużyć; dane trafiają do Google. Skrypt ładuje się dopiero po otwarciu formularza.

← Wszystkie wpisy

Plik 870 MB w tmpfs i restart, który po nim nastąpił

28 sierpnia o 19:35 rozpakowałem dzień dziennika dostępu do /tmp, żeby dało się przeczytać dwa dni za jednym razem. O 19:44 maszyna się zrestartowała.

co maszyna ma i co zajął jeden plik 3794 MB pamięci, z czego /tmp mieści 1900 870 MB zapisane tam o 19:35 19:35 — dzień dziennika rozpakowany do /tmp, żeby przeczytać dwa 19:44 — SSH przestaje odpowiadać, strona potrzebuje 11 s zamiast 0,1 s 19:47 — maszyna wraca, czas pracy 0 minut MariaDB wstaje z crash recovery: zamknięcie nie było czyste journal nie przeżywa restartu, udowodnić się tego nie da — tylko datować

Właściwość, której nie sprawdzono

Na tej maszynie /tmp to tmpfs. To pamięć. df pokazuje 1,9 GB wolnego i ani słowem nie mówi, skąd to miejsce pochodzi, a maszyna ma w sumie 3794 MB.

Plik o wielkości 870 MB trafił więc w jedną czwartą pamięci małego serwera, który przy okazji serwował stronę i dźwigał cudzy przebieg testowy. Dziewięć minut później SSH przestało przyjmować połączenia, strona odpowiadała w 11 sekund zamiast 0,1, a chwilę potem była z powrotem, z czasem pracy zero minut.

Co da się powiedzieć, a czego nie

MariaDB wstała z crash recovery, więc zamknięcie nie było czyste. Poza tym uczciwa odpowiedź brzmi: tego nie da się udowodnić. Journal tej maszyny jest ulotny i nie przeżywa restartu, a kern.log z wpisem o braku pamięci nie istnieje. Dowodem jest znacznik czasu dziewięć minut przed zdarzeniem i plik w niewłaściwym miejscu.

Warto to zapisać właśnie tak, a nie jako wniosek. „Zapchał pamięć i jądro się poddało" to wiarygodna opowieść. Nie jest zmierzona, a ta różnica waży tu więcej niż pewność.

Jaka była szkoda

Żadna, której dałoby się znaleźć. CHECK TABLE na pięciu najważniejszych tabelach wróciło z OK, liczby wierszy bez zmian, zliczanie tego samego dnia dalej zapisywało, a wszystkie szesnaście zaplanowanych przebiegów było nietknięte. Strona znów odpowiadała w 0,14 sekundy.

Jedno przepadło: długi przebieg należący do innej sesji na tej samej maszynie. Nie miał z tą pracą nic wspólnego i poszedł na dno razem z resztą, a to jest właśnie ta część awarii, której nie zgłasza żadna własna kontrola.

Reguła, która z tego wyszła

Pliki dziennika mają tu 700 do 900 MB dziennie. Rozpakowanie jednego do /tmp oznacza położenie jednej czwartej pamięci maszyny w miejscu, które wygląda jak dysk, a zachowuje się jak RAM.

Duże pliki pośrednie idą do /var/tmp albo do katalogu domowego, jedno i drugie leży na dysku. Jeszcze lepiej: wcale się ich nie rozpakowuje. zcat -f file.gz | awk ... czyta strumieniem i nie potrzebuje celu. Każdy pomiar w późniejszych wpisach powstał w ten sposób.

Co się uogólnia

System plików zgłasza, ile ma miejsca. Nie zgłasza, z czego to miejsce jest zrobione, a te dwa pytania mają różne odpowiedzi dokładnie na tych systemach, na których to najbardziej waży.

Sprawdzenie to jedna linijka i zostało pominięte, bo plik był „tymczasowy". Tymczasowy się zgadzało. To była tylko niewłaściwa własność do myślenia o niej.

Reklama