Я загружаю свое программное обеспечение из CloudFront. Процент миссий в Северной Америке намного выше, чем в Европе. В Америке показатель пропусков составляет 55,7%, а в Европе - 19,69%.
Северная Америка:
Европа:
CloudFront настроен на «Лучшую производительность». Файл хранится в корзине S3 в регионе Огайо.
Почему существует такая разница в показателях промахов между этими двумя регионами?
Проблема, похоже, связана с большим количеством точек присутствия и меньшим количеством запросов в Северной Америке по сравнению с Европой.
Похоже, перед нами стоит задача CDN: конкуренция за место в кеш-памяти. Наши файлы довольно большие (например, они занимают больше места в кеше, чем изображения). Вероятно, наш контент не остается в кеше, потому что количество запросов на точку присутствия в Северной Америке недостаточно велико, чтобы хранить его в кеше CloudFront.
Два дня назад мы перешли на другого провайдера с меньшим количеством точек присутствия в Северной Америке. Накопленная статистика за эти два дня показывает, что уровень пропусков составляет всего 11%. Значит проблема решена.
ОБНОВИТЬ:
Кажется, что соотношение "процент попаданий / процент неудач" не отражает всей картины производительности CDN. Я настроил 4 провайдера CDN: CloudFront, Google CDN, Fastly, BunnyCDN + включил в тест Google Storage. Все сети CDN были настроены на использование максимально возможного количества серверов POP. Хранилище Google было в многорегиональном режиме в США.
Затем я настроил Uptrends и Pingdom для загрузки тестового файла каждые 5 минут. Мы обслуживаем загрузку программного обеспечения, и эта конфигурация примерно напоминает реальную загрузку, которую мы видим - запрос загрузки каждую минуту или около того со всего мира. Такая нагрузка делает CDN не столь эффективными, поскольку срок хранения файлов на граничных узлах CDN истекает.
Uptrends позволил нам выбрать места для проведения тестов, и я выбрал все города в Северной Америке, Австралии, Новой Зеландии, Германии, Франции, Испании, Италии, Польше и России. Pingdom не позволяет изменять расположение контрольно-пропускных пунктов и предоставляет случайные местоположения из Европы и США. К сожалению, в Пингдоме не было контрольно-пропускных пунктов Австралии.
Размер тестового файла - 43 Мб. Я оставил тесты на всех провайдерах примерно на 20 часов. Результаты тестов следующие:
Среднее время загрузки - восходящие тенденции (чем меньше, тем лучше):
Производительность загрузки - Pingdom (чем меньше, тем лучше):
Интересно, что обычное хранилище Gloud Storage было быстрее, чем Google CDN на обеих тестовых платформах. Это может быть неправильная конфигурация с моей стороны или тот факт, что Google CDN не хранит большие файлы на своих узлах надолго.
На Uptrends были таймауты на скачивание. Тайм-аут происходит, когда сервер не может загрузить файл в течение 45 секунд. У CloudFront было 2 тайм-аута, у Google Storage - 4, у Google CDN - 8 таймаутов, у BunnyCDN - 6 таймаутов, а у Fastly - 6 тайм-аутов в течение 20 часов.