Связаться с поддержкой

Мы отвечаем по электронной почте, обычно в течение двух дней.

Для защиты от злоупотреблений 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 ... читает потоком и не требует цели. Все измерения в последующих записях сделаны так.

Что здесь обобщается

Файловая система сообщает, сколько у неё места. Она не сообщает, из чего это место сделано, и у этих двух вопросов разные ответы ровно на тех системах, где это важнее всего.

Проверка — одна строка, и её пропустили, потому что файл был «временный». Временный — правда. Просто это было не то свойство, о котором стоило думать.

Реклама