О web-разработке
и даже немного больше...

Что такое Highload, о котором так часто ведутся беседы

Готовность сайта к высоким нагрузкам определяет комплекс мероприятий, направленные на оптимизацию работы сайта, и в конечном итоге должны позволить работать сайту с большими нагрузками. Иными словами, когда речь идет о highload, это означает что речь идет о высоких «стрессовых» нагрузках на сайт, что в нашем привычном понимании подразумевается способность сайта обслуживать значительное количество пользователей, чего сложно достичь без специальных предприятий действий по оптимизации.

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

Когда нужно задумываться о highload?
Перед тем как задумываться на эту тему, хорошо бы было провести анализ работы вашего проекта. Это позволит определить наличие проблемных мест, а в случае необходимости позволит принять необходимые меры по оптимизации. Для диагностирования и выявления проблем с сайтом существует множество инструментов, в основном это системы мониторинга, популярные из них это Munin, Zabbix и Nagios. Чтобы понимать, как влияет посещаемость на производительность так же можно пользоваться инструментами веб-аналитики «google analytics» и «яндекс метрика». Используя эти инструменты в комплексе, можно накопать много полезных данных для размышления над масштабированием.

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

  • Долгий отклик сервера на запрос
  • Ошибки при подключении к базе данных
  • Появления ошибок во время запроса, как следствие из-за нехватки ресурсов
  • Сброс соединения с сервером, при попытке запроса страницы
  • Прерывистая загрузка статических данных (картинки, js-скрипты, и прочее)

С чего начать оптимизировать?
Первое что нужно сделать, это выявить проблемное место. Если вы его нашли, то можно сказать немалую часть проблемы вы решили. На самом деле точно диагностировать проблему не всегда бывает просто, поэтому традиционно следует начинать диагностику с программного обеспечения сервера. В сети интернет связка LAMP (Linux Apache Mysql PHP) в виду своей популярности используется на многих серверах. Популярность программного обеспечения на самом деле позволяет определить больше потенциальных проблем с использованием.

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

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

PHP
PHP — интерпретируемый язык программирования. Если вы немного знакомы с принципом его работы, то вы поймете, что перед тем как скрипт начинает отрабатывать, он вначале интерпретируется в бинарный код, после чего происходит непосредственно само исполнение кода. Кроме того, большие участки кода могут занимать больше времени на исполнение, что так-же, может быть узким местом на сайте. В случае с интерпретацией скриптов существуют программные средства, устанавливаемые на сервер. Наиболее популярные из них это акселераторы, называют из так потому, что они кэшируют скомпилированный код, за счет чего повторное обращение к скриптам позволяет исполнить его в значительной степени быстрее.
Когда вы нашли места своего проекта, которые требуют оптимизации, самое время приняться за поиск решения задачи потери производительности. Продумывать highload по хорошему стоит заранее ещё до запуска проекта, если вы знаете что его ждут высокие нагрузки. Таким образом, будет меньше переделок уже в момент функционирования проекта «в бою». Текста получилось многовато, что-то не изрядно не утомлять этой темой, на этом остановлюсь. Успехов в оптимизации!

Опубликован: 10.11.2016 г.

См. также:

Профессия: Менеджер проектов
Что такое Unit тесты?
Что такое Scrum и Agile?
Что такое «Реактивное программирование»?
Вечный хостинг от Eternalhost
Что такое UX/UI простыми словами
Подборка популярных шаблонизаторов PHP
Делаем шаблон сайта (шпаргалка)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта