Сегодня можно часто услышать: «нужен сервер для высоких нагрузок» или «как настроить highload севрер». В этой статье мы попытаемся разобраться с тем, что это вообще за сервера, какие нагрузки считаются высокими и что нужно, для безотказной работы высоконагруженных веб серверов.nnДля начала нужно пояснить, почему внутри словосочетания «высоконагруженный сервер» появилось слово «веб».nnТут все достаточно просто: веб-приложения – это самая распространенная сфера, в которой нагрузка может неограниченно возрастать. Эта нагрузка формируется из объемов данных, которыми оперирует приложение, количества пользователей, которые этим приложением пользуются, и скоростью обработки и выдачи данных пользователю. Для highload систем характерна положительная динамика количества пользователей. Это объясняется тем, что даже если ничего не делать, для привлекательного приложения количество пользователей будет увеличиваться пропорционально показателям роста аудитории Интернет. Увеличение количества пользователей порождает увеличение количества данных, которыми эти пользователи оперируют.n
Архитектура высоких нагрузок
Итак, в какой момент можно сказать, что вы столкнулись с высокой нагрузкой? Этот момент наступает тогда, когда система перестает качественно решать поставленные перед ней задачи. Симптомами такой проблемы для web-сервера могут быть:n
- Случайные ошибки сервера
- Медленная загрузка страниц
- Частичное отображение контента
- Оборванные соединения
Наличие высоких нагрузок предполагает использование большого приложения (в рамках Ваших аппаратных возможностей). Если Вы планируйте, что ваш проект может перейти в режим highload, то при его создании, развертывании и поддержке необходимо учитывать принципы построения крупных систем:n
- Невозможно предусмотреть все нюансы динамики системы. Проще обеспечить ее гибкость, и постепенный рост согласно потребностей.
- Необходимо разрабатывать простые решения. Решать в первую очередь те проблемы, которые возникают у абсолютного большинства пользователей.
Это применимо как к программной, так и к аппаратной части системы.nnВ процессе оптимизации постоянно требуются ответы на вопросы:n
- Какие узкие места имеются в системе и как их устранить?
- Какими запасами обладает система с учетом динамики изменения количества пользователей и данных?
- Что делать если какого-либо ресурса не хватает?
Конечно же, для ответа на все вышеперечисленные вопросы нужна система мониторинга для контроля показателей высоконагруженного сервера.n
Наблюдение лишним не бывает
Давайте поговорим о параметрах, в мониторинге которых нуждается ресурс, и об их граничных значениях. В прочем – они не сильно отличаются от стандартных серверных систем.nnНормальный показатель CPU для высоконагруженного web сервера — до 50-70%. При более высокой нагрузке требуется контроль. После 90 % — активные действия по разгрузке вычислительных мощностей.nnЗагрузка оперативной памяти до 80% — это норма. Свыше 80% также требуется контроль. Реактивным показателем высокой загрузки оперативной памяти является использование swap. Если он начинает расти, необходимо срочно принимать меры: увеличивать объемы памяти или распределять нагрузку между несколькими серверами.nnРазмер свободного места на диске – для нормальной работы требуется хотя бы 10 % незанятого пространства. Дополнительно нужно контролировать количество чтений, записей на диск. Эти параметры будут зависеть от конкретного устройства. Также стоит контролировать и длину очереди к диску. Желательно, чтобы она не превышала 1.nnБольшие нагрузки на сетевой интерфейс сами по себе не являются проблемой. Однако резкое увеличение количества сетевого траффика может говорить о зловредной активности, а постоянная загрузка интерфейса более чем на 90% о необходимости масштабирования системы.nnДля высоконагруженных серверов становится более актуальным наличие в системе мониторинга построения линии тренда. То есть некой условной линии, которая в будущей перспективе покажет загрузку сервера. Наличие такой информации поможет в планировании расширения систем и предупреждении проблем с нехваткой ресурсов.n
Пикообразные нагрузки
Не стоит забывать о том, что нагрузки на систему в разные моменты времени могут быть неодинаковыми. Веб сервер может быть высоконагруженным только в некоторые периоды, например в период Рождественкой распродажи или во время финального матча лиги чемпионов. Если вы заметили такие особенности за Вашим проектом, рекомендуем заранее подготовиться к наступлению такого периода. Однако выполняя оптимизацию заранее, Вы легко можете не угадать с корнем проблемы. (Конечно же, мы говорим сейчас о продуктивных системах уже прошедших этап тестирования). Эффективнее будет увеличить количество мощностей на проблемный период, а после – снизить его до прежнего уровня. Не забывайте в это время особенно тщательно следить за работой высоконагруженного веб-сервера или группы серверов. Это поможет выявить проблемы в «боевом» режиме, и в будущем более точно спланировать выделение необходимых ресурсов.nnСовременные технологии, среди которых облачные решения, позволяют достаточно гибко управлять аппаратными мощностями, необходимыми для Вашего проекта. Используя решения от ведущих поставщиков облачных услуг, вы можете экономить средства, оплачивая только ресурсы, которые реально используются Вашим веб-приложением.n
Вместо заключения
Настройка высоконагруженного веб сервера не ограничивается исключительно настройкой серверных систем. Несмотря на то, что можно оптимизировать работу непосредственно служб web, баз данных, значительная часть проблем кроется в самом приложении. Именно поэтому так необходима слаженная работа разработчика и системного администратора. Если одно из звеньев пропадает, результат становится малоэффективным. Предлагая услуги по настройке высоконагруженных web серверов, мы подразумеваем участие в проекте как специалистов в системном администрировании, так и специалистов в области разработки web-сайтов и приложений.n
Предоставляем услуги по оптимизации проэктов для HightLoad, подробности [email protected]