Автоматическое масштабирование AWS Aurora вызывает неправильные аргументы для mysqld_stmt_execute

Мы используем AWS Aurora (Serverless RDS) в нашей производственной среде. Он должен масштабироваться между 2 единицами емкости (4 ГБ ОЗУ) и 8 единицами емкости (16 ГБ ОЗУ).

За последние 2 месяца наша база данных ни разу не масштабировалась автоматически, она работала в минимальной единице мощности. На прошлой неделе из-за увеличения нагрузки на систему автомасштабирование стало срабатывать каждые несколько минут. В дневное время он масштабировался от 4 до 8 единиц емкости.

И с прошлой недели у нас возникла проблема (не постоянно, а каждые несколько минут), когда наше приложение запускает SQL-запросы к базе данных, Неправильные аргументы для mysqld_stmt_execute. Эта ошибка возникает как для операций чтения, так и для записи.

Итак, мы подозревали, что причиной может быть автоматическое масштабирование, и мы оставили одни и те же единицы емкости как для min(8), так и для max(8), чтобы избежать масштабирования. Таким образом, масштабирование не произошло, и мы больше не получили эту ошибку. Итак, мы подтвердили, что ошибка была вызвана автомасштабированием. На самом деле автомасштабирование помогло нам снизить стоимость, но, к сожалению, вызывает ошибку.

Мы не понимаем, почему эта ошибка возникает при масштабировании. Может кто-нибудь объяснить, почему масштабирование вызывает эту проблему и как этого избежать?

Или это связано с проблемой пула соединений? Я также поднял его в проекте пула соединений.

https://github.com/brettwooldridge/HikariCP/issues/1407

Похоже, вы пригвоздили это к ошибке AWS.

Rick James 11.07.2019 16:15
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
6
1
617
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это проблема с кэшированием подготовленных операторов. Когда новые серверы предоставляются для масштабирования и когда на новых серверах запускаются кэшированные подготовленные операторы, MySQL выдает эту ошибку. Итак, мы отключили кеш подготовленных операторов, и мы больше не получаем ошибку.

Хотя это работает, мы не смогли кэшировать подготовленные операторы, что может немного отставать в производительности. На данный момент все в порядке, так как мы не заметили задержки.

Другие вопросы по теме