Планирование мощностей

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

Из этих примеров необходимо извлечь важный урок — каждый сегмент архитектуры тратит системные ресурсы на обеспечение работы вашего сайта, и вы должны позаботиться о том, чтобы эти ресурсы измерялись должным образом. Тем не менее правильно выбрать и записать метрики недостаточно. Необходимо иметь некоторое представление о том, когда эти ресурсы будут исчерпаны; именно поэтому необходимо периодически проводить эксперименты для установления этих потолков.

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

Сбор метрических данных — необходимость, а не роскошь. Метрики представляют собой «глаза и уши» вашей инфраструктуры; содержащаяся в них информация может пригодиться всем подразделениям вашей организации: финансовым и техническим, службе поддержки клиентов, управлению производством.

Планирование мощностей невозможно без сбора данных и ведения истории изменений метрик системного и прикладного уровня. Кроме того, для эффективного планирования необходимо знать ограничения производительности вашей системы, чтобы не приближаться к ним. Процесс определения потолков в каждой части архитектуры остается неизменным:

  1. Соберите и сохраните метрические данные по основной функции сервера. Примеры: обращения Apache, запросы к базам данных.
  2. Соберите и сохраните метрические данные по основным аппаратным ресурсам сервера. Примеры: процессор, память, диски, каналы связи.
  3. Определите, как основная функция сервера связана с аппаратными ресурсами. Примеры: n запросов к базе данных загружают процессор на m процентов.
  4. Найдите максимальный приемлемый уровень использования ресурсов (потолок) с учетом как основной функции сервера, так и аппаратных ресурсов одним из следующих способов.
  5. Искусственно (и осторожно!) повышайте рабочую нагрузку на сервер при помощи распределителя нагрузки или специальных приложений.
  6. Как можно более точно имитируйте реальную рабочую нагрузку.