Выброс трафика с главной страницы Yahoo

Область планирования веб-мощностей может позаимствовать несколько полезных стратегий из старых, лучше изученных отраслей — машиностроения, производства, строительства и т. д. В этих дисциплинах основные решения из области проектирования и управления тоже базируются на ресурсах и постоянных ограничениях.

Понятно, что проектирование и строительство зданий, мостов и автомобилей требует досконального знания прочности материалов, нагрузки, которую может нести каждый компонент, и точек потенциальных сбоев. Звучит знакомо? Так и должно быть, потому что те же соображения и концепции используются при планировании мощностей в области управления веб ресурсами.

Находясь под нагрузкой, материалы, например сталь или цемент, испытывают физическое напряжение. Некоторые материалы обладают свойством эластичности, благодаря которому при небольших нагрузках они могут восстанавливать начальные свойства, но ломаются при более высоком напряжении. Аналогичными свойствами обладают и серверы, сети или дисковые подсистемы. При достижении критических уровней потребления ресурсов, скажем, 100-процентной загрузки процессора или интенсивности работы с диском, происходит сбой. Для предотвращения таких сбоев проектировщики закладывают в свои архитектуры так называемый запас прочности. Упрощенно, термин «запас прочности» означает выделение ресурса свыше теоретической необходимости для защиты от непредвиденных ситуаций в ходе эксплуатации.

В области машиностроения или строительства запас прочности закладывается еще на фазе проектирования, а в области управления веб-ресурсами его следует рассматривать как количество резервируемых доступных ресурсов по отношению к потолкам, установленным для каждого класса ресурсов. Запас прочности позволяет ресурсам пережить некоторый объем непредвиденно возросшей нагрузки. Запас прочности должен рассчитываться для всех ресурсов, — процессора, диска, памяти, пропускной способности сети, даже целых хостов (если вы управляете работой очень крупного сайта).

Например, ранее мы установили верхний предел загрузки процессора для веб- серверов равным 85 процентам. Это позволяет иметь «…достаточный резерв для того, чтобы справиться со случайными выбросами». Это означает, что в архитектуру закладывается 15-процентный запас прочности. При составлении прогнозов необходимо принять во внимание запас прочности и соответствующим образом отрегулировать потолки.

Почему именно 15 процентов, а не 10 или 20? Запас прочности обычно выглядит как обоснованное предположение, а не результат точных вычислений. Некоторые ресурсы, например системы кэширования, справляются со случайными отклонениями нагрузки лучше других систем; при выборе запаса прочности для них можно обойтись без перестраховки. Запас прочности должен базироваться на «выбросах» нагрузки, которые встречались вам в прошлом.

На рисунке представлен эффект от типичного выброса трафика из тех, которые регулярно происходят в работе Flickr. Он ни в коей мере не является самым большим. Такие выбросы обычно происходят тогда, когда на главной странице http://www.yahoo.com публикуется хорошо заметная ссылка на группу, фотографию или страницу поиска по тегам Flickr. Этот конкретный выброс был недолговечным, он длился около двух часов, пока ссылка оставалась на странице. За это время трафик на фотосерверах вырос на 8 процентов. Рост трафика на 5-15 процентов является вполне обычным явлением; он подтверждает, что запас прочности в 15 процентов выбран разумно.