Как правило Nginx return 301 https://$host заблокировало валидацию Let's Encrypt и привело к истечению сертификата.
Post-mortems & War Stories
Разборы реальных аварий, блокировок СУБД, OOM-киллеров, утечек дескрипторов и ночных факапов.
Всего материалов: 17Как незакрытая транзакция в блоке defer/except исчерпала max_connections=500 и положила веб-интерфейс.
Разбор директив RateLimitIntervalSec и RateLimitBurst в journald.conf при возникновении лог-шторма.
Как аварийный сброс кэша в режим Write-Through мгновенно обрушил транзакции баз данных и как настроить мониторинг storcli.
Почему брокер перестает принимать сообщения от продюсеров и как настроить vm_memory_high_watermark.paging_ratio.
Как микросервисы без DNS-кэширования генерировали 180 000 запросов в секунду к локальному агенту Consul.
Разбор зависания узлов в состоянии CLUSTER FAILOVER, сброс зависших слотов через CLUSTER SETSLOT NODE.
Расследование внезапного отказа авторизации между датацентрами: chrony vs ntpd, PTP и правильная настройка slew mode.
Разбор cooperative sticky rebalance, параметров max.poll.interval.ms и heartbeat.interval.ms в высоконагруженных consumer groups.
Как упавшие воркеры не освобождали IPC семафоры в sysvipc, что приводило к ошибке No space left on device в shmget.
Диагностика потерь пакетов на сетевом интерфейсе Intel 10G/40G: ethtool -S, ring buffer rx/tx и бюджет NAPI poll.
Разбор аварийного autovacuum to prevent wraparound: как агрессивный вакуум положил IOPS на SSD и заблокировал DDL.
Анализ задержек Redis fork() на инстансах с 48 ГБ RAM: Transparent Huge Pages, vm.overcommit_memory и rdbcompression.
Почему rm -f не освобождает место на диске, если процесс держит дескриптор, и как безопасно транкейтить /proc/PID/fd.
Разбор инцидента, когда ядро Linux при нехватке памяти выбрало жертвой не раздувшийся Java-процесс, а легковесный агент мониторинга.
История о том, как свободные 400 ГБ на диске не спасли продакшен от ошибки «No space left on device» из-за 100% утилизации таблицы inode.
Разбор аварии в пятницу вечером: как один неоптимальный пакетный UPDATE в 2 миллиона строк парализовал реплику из-за блокировок doublewrite buffer и sync_binlog=1.