Я никогда не использовал AWS раньше и создал php-приложение, размещенное на экземпляре EC2.
Приложение вставляет записи в RDS после их обработки. На свободном уровне он вставляет их со скоростью около 10 записей в секунду.
Как я могу улучшить скорость, с которой этот процесс имеет место? Я добавил хранилище IOPS на 100 ГБ с лимитом в 1000 iops.
Однако, когда я запускаю свое приложение, я получаю те же скорости, что и раньше.
Какие спецификации экземпляра Ec2 и экземпляры RDS будут определять, как быстро он будет записываться в базу данных?
Предоставление экземпляров EC2 и RDS в том же регионе, что вы можете получить немного большую производительность, увеличив спецификацию RDS, но, как правило, MySQL не так быстро пишет, особенно когда вы добавляете больше индексов в таблицу.
Вы можете получить лучшую производительность, добавив свою вставку в запрос вместо того, чтобы делать это индивидуально, например
INSERT INTO users (name, gender) VALUES ('bob', 'm'), ('jane', 'f')
Это может быть проще, если вы используете какую-то систему очередей, например SQS или эластичную, для записи в память и асинхронно вставляете их в пакет.
Примите к сведению
Экземпляр AWS free tier предназначен только для случайного использования. t2.micro работает в режиме пакетной обработки "CPU credit". После того, как у вас закончится этот процессорный кредит, сервер будет работать на более чем 25% CPU, таким образом, ваша производительность будет страдать.
вы должны немного инвестировать в cloudwatch для отправки информации RDS IOPS, чтобы узнать, что представляет собой настоящие проблемы, например, чтобы выяснить, есть ли проблема с ЦП, ОЗУ или ввода-вывода.
AWS в течение некоторого времени представляет SSD-накопитель gp2. Таким образом, вы должны использовать AWS на один GB x 3 IOPS механизм, чем прыгать прямо в Provisioned IOPS. В этой статье рассказывается о том, почему вы должны использовать резервное хранилище gp2, чем использовать IOPS . Вы также получаете дополнительное соотношение цены и качества с gp2 с пакетом IO.