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