Вопрос или проблема
Мы работаем с экземпляром AWS RDS MariaDB в течение нескольких лет без каких-либо проблем. На этой неделе два наших экземпляра зависли.
Это потребовало от нас жесткой перезагрузки RDS вручную из консоли AWS. Только после жесткой перезагрузки (5-10 минут) экземпляр снова начинает работать и отвечает.
Симптомы
- База данных полностью не реагирует
- Окно журналов в консоли AWS показывает “нет журналов”, что неправильно, потому что журналы определенно есть
- Мониторинг и журналы перестают полностью сообщать метрики
- Метрика EBSByteBalance% резко падает до 0
- База данных отображается как “Доступна”
Ниже представлено, как выглядит EBSByteBalance%:
Анализ
- Нет изменений в наших нагрузках
- Внешний трафик выглядит совершенно нормальным и ожидаемым, нет странных внешних взаимодействий
- Нет плохих запросов при просмотре движка базы данных
- В панели состояния AWS не сообщается о проблемах
Что здесь происходит? Это произошло с двумя базами данных с совершенно разными типами нагрузок.
Ответ или решение
Разбор проблемы зависания экземпляров AWS RDS MariaDB и их перезагрузка
Ваша ситуация с экземплярами AWS RDS MariaDB, которые внезапно стали непрерывно зависать, требует внимательного анализа множества факторов, так как данный сценарий может быть вызван различными причинами. Давайте рассмотрим основные аспекты проблемы и возможные пути её разрешения.
Описание проблемы
На протяжении нескольких лет ваши экземпляры MariaDB работали без сбоев, однако на этой неделе два экземпляра столкнулись с серьёзной проблемой: они полностью стали недоступными. Вот основные симптомы:
- Полная недоступность базы данных: Пользователи не могут выполнять запросы.
- Отсутствие логов: В логах AWS Console указано "нет логов", несмотря на наличие ожидаемых записей.
- Остановка отчетности метрик: Все метрики по мониторингу и логам перестали обновляться.
- Падение метрики EBSByteBalance% до нуля: Это может указать на проблемы с дисковыми операциями или ресурсами.
- Статус экземпляра "Available": Несмотря на фактическую неработоспособность, экземпляр показывается как доступный.
Анализ ситуации
Проведя анализ описанных симптомов, можно выделить несколько ключевых моментов:
- Отсутствие изменений в рабочей нагрузке: Это указывает на то, что внезапные проблемы могут быть вызваны внутренними или внешними факторами инцидента, а не нагрузкой приложения.
- Нормальная внешняя активность: Отсутствие аномальных взаимодействий с внешними системами предполагает, что проблема может быть только локальной, т.е. непосредственно в среде RDS или на уровне сети.
- Отсутствие «плохих» запросов: Нет никаких признаков того, что SQL-запросы могут быть причиной зависаний.
Возможные причины проблемы
На основании указанных симптомов и анализа, мы можем рассмотреть следующие потенциальные причины зависания ваших экземпляров MariaDB:
-
Нехватка ресурсов: Можно допустить, что экземпляры стали испытывать недостаток производительности из-за превышения лимитов процессора или памяти, что приводит к зависанию. Даже если внешне нагрузки не изменились, кардшему изменены внутренние параметры (например, автоматическое увеличение размеров).
-
Проблемы с IOPS или EBS: Метрика EBSByteBalance% упала до нуля, что указывает на возможные проблемы ввода-вывода (IO) на уровне Elastic Block Store (EBS). Это может происходить в результате высокой нагрузки на дисковую подсистему или ошибок в самой файловой системе.
-
Блокировки в транзакциях: На уровне MariaDB могут возникать блокировки, которые мешают выполнению других запросов. Это может не проявляться в виде логов, если блокировки происходят на уровне хранения данных.
-
Ошибки конфигурации: Сетерная или логическая ошибка в конфигурации MariaDB и AWS RDS может привести к неправильным настройкам, что может быть причиной зависаний.
Рекомендации по устранению проблемы
Для решения данной проблемы рекомендуется выполнить следующие действия:
-
Мониторинг производительности: Используйте AWS CloudWatch для получения более детализированной информации о производительности экземпляров (CPU, память, базовые EBS метрики).
-
Используйте AWSDocDB и Enhanced Monitoring: Это поможет углубленно анализировать состояние базы данных и производить диагностику в режиме реального времени.
-
Проверьте конфигурацию: Пересмотрите параметры конфигурации MariaDB. Возможно, стоит провести настройку параметров производительности, таких как innodb_buffer_pool_size и другие.
-
Обновление: Проверьте, нет ли доступных обновлений для RDS MariaDB, которые могут содержать исправления для известных проблем.
-
Отключение/включение дополнительных функций: Если используются какие-либо дополнительные функции или параметры, связанные с производительностью (например, автоматическое увеличение размеров), временно отключите их, чтобы отследить влияние на производительность.
Заключение
Проблема, с которой вы столкнулись, имеет множественные аспекты, и требуется системный подход для её диагностики. Основная цель — выявить коренные причины зависания и предпринять шаги для предотвращения повторения инцидента. Важно проводить регулярные проверки системы и мониторинг состояния баз данных для более раннего выявления проблем и в дальнейшем минимизировать потенциальные риски.
Если же после всех предложенных мер проблема повторится, следует рассмотреть возможность обращения к поддержке AWS для более глубокого анализа.