У нас есть веб-приложение, размещенное на веб-сервисах Amazon. Наша база данных - это multi-az RDS MySQL-сервер, на котором запущена версия 5.1.57, и с ней взаимодействуют 3-4 сервера приложений.
Сегодня мы начали замечать множество ошибок типа «Превышено время ожидания блокировки; попробуйте перезапустить транзакцию» - это наблюдается почти в 1% запросов POST.
В код, работающий на сайте, никаких изменений не вносилось. Никаких изменений схемы не было. У нас не было большого скачка трафика. Я смотрел на запущенные процессы, и ни один из них не вышел из-под контроля.
Я попытался масштабировать наш экземпляр RDS от маленького до большого, но безрезультатно.
Два дня назад у Amazon были перебои в работе. В рамках восстановления после этого наш сервер RDS и наши серверы приложений оказались в разных зонах доступности, но все в одном регионе. Но вчера все было хорошо, поэтому я не уверен, что это связано.
Таймауты блокировки находятся в разных типах запросов и происходят в разных таблицах InnoDB.
Я заметил, что количество открытых подключений подскочило, когда мы начали замечать проблемы, но они могут быть симптомом, а не причиной.
Каковы мои следующие шаги по отладке этого?
Вероятно, произошла потеря ввода-вывода на одном или нескольких томах EBS, поддерживающих экземпляр RDS. Количество уменьшенного количества операций ввода-вывода из-за повторного зеркала EBS довольно значительно, поскольку оно влияет на базы данных.
Если вы платите за премиум-поддержку, эта команда может изучить такие важные детали для вас, или вы можете попробовать спросить на форумах AWS. Инженеры RDS, вероятно, могли бы подтвердить основные проблемы EBS или их причину.