ogurexxx open to work
RU EN
← cd ~

ogurexxx@root:~$ cat postmortem.md

Инциденты

Сайт работает на собственном сервере, и иногда он падает. Здесь — честные разборы: что случилось, почему, что сработало и что исправлено. Без поиска виноватых, с выводами.

сейчас: всё работает

доступность за сутки 100% · за 30 дней 99.29% · проверено только что

90 дней назад30 дней назадсегодня

1 дней без инцидентов

серьёзный 27.10.2026 длительность: 16 ч 15 мин ✓ решён

Сервер перестал отвечать на 16 часов

Сайт и все сервисы на сервере были недоступны около 16 часов. Наиболее вероятная причина — системный накопитель перестал отвечать после двух с половиной суток непрерывной записи ошибок несовместимого драйвера видеокарты в журнал. Сервер не перезагрузился сам, а о падении я узнал только через 8 часов.

Хронология (МСК)

  1. 25.10 05:02Сервер загружается. С первой секунды драйвер видеокарты пытается инициализировать карту, падает и пробует снова — примерно раз в секунду. Каждая ошибка пишется в системный журнал.
  2. 25–27.10За 57 часов — 185 000 ошибок, журнал вырастает почти до 1 ГБ на системном накопителе. Внешне всё работает.
  3. 26.10 23:24Последняя проверка, при которой сайт точно работал.
  4. 27.10 14:00:22Последняя запись в журнале — обрыв на полуслове, без штатного выключения. Сервер перестаёт отвечать.
  5. 27.10 ~22:15Недоступность замечена при плановой проверке сайта. Внешние проверки из четырёх стран: «No route to host».
  6. 28.10 06:15Сервер перезагружен вручную. Все сервисы, включая сайт, поднялись автоматически.
  7. 28.10Расследование по журналам и исправления — см. ниже.

Причина

На сервере был установлен драйвер видеокарты, который не поддерживает установленную в нём старую видеокарту. Служба, следящая за драйвером, перезапускала его по кругу, и каждый круг давал новые записи в журнале. Двое с половиной суток непрерывной записи — тяжёлая нагрузка для системного накопителя; наиболее вероятно, он перестал отвечать, и журнал оборвался, потому что писать стало некуда.

Что осталось невыясненным

Версия с накопителем объясняет обрыв журнала и то, что сторожевой таймер не сработал: ядро продолжало его «кормить». Но внешние проверки получали «No route to host» — обычно это значит, что сервер не отвечал даже на сетевом уровне, чего при зависшем только накопителе быть не должно. Прямых улик нет и быть не может: журнал хранился на том же накопителе. Поэтому причина названа наиболее вероятной, а не доказанной.

Почему простой был таким долгим

  • Сторожевой таймер был включён (5 минут), но не сработал: судя по всему, ядро продолжало подавать сигнал «жив».
  • Мониторинг доступности работал на том же сервере — и завис вместе с ним. Уведомлений не было.
  • Ошибки драйвера шли с момента загрузки, но журнал никто не читал: шум не был виден, пока не стал аварией.

Что сработало хорошо

  • После перезагрузки все сервисы поднялись сами — ничего не пришлось запускать вручную.
  • Данные не пострадали: диск с данными исправен, сайт не хранит состояния, которое могло бы повредиться.
  • Журналы сохранились до последней секунды перед сбоем — по ним удалось восстановить картину.

Что исправлено

  • [x] Несовместимый драйвер видеокарты удалён: ошибок в журнале больше нет.
  • [x] Журнал ограничен 100 МБ, накопившиеся 933 МБ удалены.
  • [x] Сторожевой таймер — 30 секунд вместо 5 минут.
  • [x] Внешняя проверка доступности сайта — со стороннего сервиса, а не с этого же сервера: при падении приходит уведомление.

Выводы

  • Мониторинг, живущий на том же сервере, не увидит падения самого сервера.
  • Сторожевой таймер ловит не все зависания — только те, при которых останавливается ядро.
  • Бесконечный поток ошибок в журнале — это не косметика, а угроза надёжности.