Я вижу некоторые ошибки на нашем сервере AWS RDS MySQL:
Общая ошибка: 1205 Превышено время ожидания блокировки; попробуйте перезапустить транзакцию Ошибка сериализации: 1213 Обнаружена взаимоблокировка при попытке получить блокировку; попробуйте перезапустить транзакцию
Посмотрел вкладку мониторинга консоли RDS, а там вроде читал IOPS обрезан 1 , возможно это указывает на то, что дисковый IO не поспевает за запросами. Прикол в том, что запись IOPS вроде не обрезается 2. В общем, очень мало запросов к серверу приложений, которые не выполняются из-за ошибки базы данных, но хотелось бы, чтобы это было отсортировано.
Загрузка ЦП на сервере RDS достигает пика около 50%. Это заставляет меня думать, что размера db.t3.small RDS достаточно.
База данных крошечная, всего 20 ГБ, и была создана несколько лет назад, поэтому она находится на магнитном носителе. Читал, что это означает, что существует ограничение в 200 IOPS, что соответствует примерно 150 + 50 наблюдаемым пикам IOPS. Поэтому я думаю о переходе на SSD общего назначения. Однако для небольшой базы данных это обеспечит только 100 операций ввода-вывода в секунду в качестве базовой производительности в соответствии с документацией, но, согласно документации, возможна пиковая нагрузка в 3000 операций ввода-вывода в секунду.
Звучит ли это как хороший ход, и есть ли другие предложения о том, что делать?
Вы по-прежнему можете извлечь выгоду из анализа нагрузки на сервер, чтобы повысить скорость выполнения запросов. С Новым Годом.
Я работаю с SSD общего назначения уже пару дней. Ошибки взаимоблокировки MySQL с тех пор не наблюдались, поэтому, если кто-то еще найдет вопрос, переход с Magnetic на SSD общего назначения в RDS, безусловно, стоит попробовать, если у вас есть подобные проблемы.
Запрос дополнительной информации. Опубликуйте на pastebin.com и поделитесь ссылками. Из вашего корня входа SSH, текстовые результаты: B) ПОКАЗАТЬ ГЛОБАЛЬНЫЙ СТАТУС; минимум через 24 часа UPTIME C) ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ; D) ПОКАЗАТЬ ПОЛНЫЙ СПИСОК ПРОЦЕССОВ; д) СТАТУС; G) ПОКАЗАТЬ СТАТУС INNODB ДВИГАТЕЛЯ; для анализа настройки рабочей нагрузки сервера, чтобы предоставить предложения.