У меня есть экземпляр RDS, который мне стоит больших денег. Из своей активности в учетной записи на Amazon я вижу, что за последние 7 дней у экземпляра было около 800000000 запросов ввода-вывода.
Чтобы дать вам небольшую перспективу, мое приложение получает всего около 6000 уникальных посещений в день и не делает так много подключений к базе данных.
Итак, что же такое запрос ввода-вывода и почему это число может быть настолько неземным? Я готов сделать все возможное с моим приложением, чтобы снизить эту стоимость, если это необходимо, но я не уверен, что происходит на самом деле.
Буду признателен за ваши мысли.
У меня есть экземпляр RDS, который мне стоит больших денег.
«Облачные услуги» не означают, что все будет стоить вам копейки. По сути, запрос ввода-вывода - это что угодно (например, база данных или страница индекса), которую необходимо получить с диска. Если у вас большая база данных и запросы с использованием полного сканирования таблицы, это никоим образом не удивительно. Вы можете рассмотреть возможность поиска запросов с использованием неиндексированных столбцов для фильтрации, включив возможность записывать "неиндексированные" запросы в медленный журнал MySQL и добавление индексов для соответствующих столбцов. Поскольку у вас нет возможности напрямую редактировать файл конфигурации, используйте Конфигурация группы параметров RDS установить log-queries-not-using-indexes
и запросить mysql.slow_log
таблица для записей журнала.
Также рассмотрите возможность запуска Скрипт для начинающих по настройке MySQL из вашего экземпляра AWS по отношению к экземпляру базы данных для общего анализа производительности, чтобы увидеть, поможет ли более крупный экземпляр решить проблему из-за большего объема памяти, доступной для кэширования, что снизит нагрузку на диск. Сценарий оценивает ряд параметров конфигурации и счетчиков производительности, чтобы дать некоторую информацию о возможных узких местах и предоставить некоторые общие рекомендации.
Ах, Amazon Web Services. Одна из самых больших доступных монеток. Очень хорошо, но не всегда дешево. На самом деле, это почти никогда не бывает дешевым, и всегда сложно оценить расходы.
Запрос ввода-вывода - это операция с диском. Будь то чтение или запись, вы в основном отвечаете за то, сколько данных вы получаете от их системы. Это безумие.
Вы можете оценить количество запросов ввода-вывода, которые вы делаете, посмотрев на iostat.
800000000 запросов ввода-вывода за 7 дней .. Это ~ = 1300 операций ввода-вывода в секунду. Вот это да. Это какое-то злобно-быстрое выступление.
Например, база данных веб-сайта среднего размера может иметь размер 100 ГБ и ожидать в среднем 100 операций ввода-вывода в секунду в течение месяца. Это приведет к 10 долларам в месяц затрат на хранение (100 ГБ x 0,10 доллара в месяц) и примерно 26 долларам в месяц затрат на запросы (~ 2,6 миллиона секунд в месяц x 100 операций ввода-вывода в секунду * 0,10 доллара США за миллион операций ввода-вывода).
Из http://aws.amazon.com/ebs/ примерно 90% пути вниз по странице
Если вы действительно хотите снизить затраты на это, возможно, пора посмотреть, действительно ли RDS лучше всего подходит для вашего приложения и бюджета проекта.
Если у вас всего 6 тысяч обращений в день, вы можете добиться большего с точки зрения стоимости и производительности с помощью выделенного сервера (предпочтительно 2 из них, один для БД, один для веб-сервисов). На самом деле сделать этот звонок немного сложнее, поскольку вы не слишком много сказали о своем приложении.