Звернутися до підтримки

Відповідаємо електронною поштою, зазвичай протягом двох днів.

Google reCAPTCHA перевіряє це звернення на зловживання; дані передаються до Google. Скрипт завантажується лише під час відкриття цієї форми.

← Усі записи

Файл на 870 МБ у tmpfs і перезавантаження, що настало

28 серпня о 19:35 я розпакував день журналу доступу до /tmp, щоб прочитати два дні за один прохід. О 19:44 машина перезапустилася.

що має машина і що зайняв один файл 3794 МБ пам’яті, з них /tmp вміщає 1900 870 МБ записано туди о 19:35 19:35 — день журналу розпаковано до /tmp, щоб прочитати два 19:44 — SSH не відповідає, сторінка бере 11 с замість 0,1 с 19:47 — машина повернулася, час роботи 0 хвилин MariaDB піднімається з crash recovery: завершення було нечистим журнал не переживає перезапуску, довести не можна — лише датувати

Властивість, яку не перевірили

На цій машині /tmp — це tmpfs. Це пам’ять. df показує 1,9 ГБ вільного і жодним словом не каже, звідки це місце береться, а всього машина має 3794 МБ.

Отже, файл на 870 МБ потрапив у чверть пам’яті маленького сервера, який заразом віддавав сайт і тягнув чужий тестовий прогін. За дев’ять хвилин SSH перестав приймати з’єднання, сторінка відповідала за 11 секунд замість 0,1, а невдовзі була знову на місці — з часом роботи нуль хвилин.

Що можна сказати, а чого ні

MariaDB піднялася з відновленням після збою, отже завершення не було чистим. Далі чесна відповідь така: довести це не можна. Журнал цієї машини летючий і перезапуску не переживає, і немає жодного kern.log із рядком про брак пам’яті. Доказ — позначка часу за дев’ять хвилин до події і файл не в тому місці.

Так це й варто записати, а не як висновок. «Забив пам’ять, і ядро здалося» — правдоподібна історія. Виміряною вона не є, і тут ця різниця важить більше за певність.

Яка була шкода

Жодної, яку вдалося б знайти. CHECK TABLE на п’яти найважливіших таблицях повернув OK, числа рядків не змінилися, лічба того самого дня далі писала, і всі шістнадцять призначених завдань були цілі. Сторінка знову відповідала за 0,14 секунди.

Одне пропало: довгий прогін, що належав іншому сеансові на тій самій машині. До цієї роботи він стосунку не мав і потонув разом з усім іншим — а це саме та частина збою, про яку не повідомляє жодна місцева перевірка.

Правило, яке з цього вийшло

Журнали тут по 700-900 МБ на день. Розпакувати один у /tmp означає покласти чверть пам’яті машини туди, що виглядає як диск і поводиться як ОЗП.

Великі проміжні файли йдуть до /var/tmp або до домашнього каталогу — і те й те лежить на диску. Ще краще: їх узагалі не розпаковують. zcat -f file.gz | awk ... читає потоком і не потребує цілі. Усі вимірювання в наступних дописах зроблено так.

Що тут узагальнюється

Файлова система повідомляє, скільки в неї місця. Вона не повідомляє, з чого це місце зроблене, і ці два питання мають різні відповіді саме на тих системах, де це важить найбільше.

Перевірка — один рядок, і її проминули, бо файл був «тимчасовий». Тимчасовий — правда. Просто це була не та властивість, про яку варто було думати.

Реклама