Сколько пользователей выдержит сайт и как это узнать

Обновлено

«Сколько человек выдержит наш сайт?» — вопрос, который задают перед каждой распродажей, рекламной кампанией и запуском. Короткий честный ответ: заранее, по характеристикам сервера, точно не скажет никто. Один и тот же хостинг может уверенно держать тысячи посетителей на одном сайте и сдаться на сотне на другом. Ниже — от чего это зависит, как посчитать, сколько посетителей нужно выдержать именно вам, как грубо оценить предел и как узнать его точно.

Почему нельзя просто назвать число?

Вместимость сайта определяется не одной характеристикой, а самым слабым звеном в цепочке:

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

Поэтому любые таблицы вида «такой-то тариф выдерживает столько-то посетителей» — в лучшем случае грубый ориентир.

Что значит «сайт выдержит»?

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

  • время отклика: 95 % страниц открываются быстрее заданного порога, например 2 секунд. Почему смотрят на 95 %, а не на среднее, — в статье что такое RPS и время отклика;
  • ошибки: доля ответов с ошибками меньше заданной, например 1 %.

Тогда вопрос звучит точно: при каком числе посетителей одновременно сайт ещё укладывается в эти пороги?

Как перевести посещаемость в посетителей одновременно?

В аналитике — Яндекс Метрике и подобных системах — обычно видно визиты за час или за день. Для оценки нагрузки нужно число людей, которые находятся на сайте одновременно. Его можно посчитать:

одновременно на сайте ≈ визитов в час × средняя длительность визита в минутах ÷ 60

Условный пример: в пиковый час — 1 800 визитов, средняя длительность визита — 3 минуты. Получаем 1 800 × 3 ÷ 60 = 90 человек одновременно.

Обратите внимание: считать нужно от пикового часа, а не от суточной посещаемости. 10 000 визитов в сутки распределяются неравномерно: днём и вечером их больше, ночью почти нет, а после рассылки бывает всплеск за 10–15 минут. Средняя нагрузка за сутки ничего не говорит о том, выдержит ли сайт пик.

Какой пик закладывать?

  • Если была похожая акция — возьмите её пиковый час из аналитики и добавьте ожидаемый рост: больше бюджет рекламы, больше база рассылки.
  • Если планируется рассылка — размер базы × доля открытий × доля переходов. Основная часть переходов придётся на первые 10–20 минут после отправки, поэтому пик будет короче и выше, чем кажется.
  • Если планируется реклама — ожидаемые клики в час из рекламного кабинета, плюс обычная посещаемость в это время.
  • Если данных нет — возьмите обычный пиковый час и проверьте сайт на нагрузку в несколько раз больше, а затем найдите предел стресс-тестом, чтобы знать запас.

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

Как грубо оценить предел без теста?

Если вы знаете, сколько у сервера рабочих процессов и сколько в среднем собирается одна страница, можно прикинуть верхнюю границу:

страниц в секунду (максимум) ≈ число рабочих процессов ÷ время сборки страницы в секундах

Условный пример: 20 процессов, страница собирается за 0,4 секунды — получается около 50 страниц в секунду. Если посетитель открывает новую страницу примерно раз в 30 секунд, это порядка 50 × 30 = 1 500 человек на сайте одновременно.

Но это именно оценка сверху, и в жизни она почти всегда оптимистична:

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

Такая оценка полезна, чтобы понять порядок величин. Чтобы узнать, сколько выдержит именно ваш сайт, нужен тест.

Как узнать точно?

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

Тестировать можно только свой сайт или сайт, владелец которого дал согласие. Запускайте тест в часы минимального трафика и с автоматической остановкой.

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

Какие ошибки чаще всего искажают оценку?

  • Суточная посещаемость вместо пикового часа. Сайт с 10 000 визитов в сутки может спокойно работать весь день и не выдержать 15 минут после рассылки.
  • Тест одной главной страницы. Главная обычно закэширована, и результат получается в разы оптимистичнее реального. Поиск, фильтры и карточки товаров ведут себя иначе.
  • Одна и та же карточка товара в тесте. Сервер быстро кладёт её в кэш, и тест измеряет кэш, а не каталог.
  • Виртуальные посетители без пауз. Без пауз один виртуальный посетитель создаёт нагрузку, как десятки людей, и предел получается заниженным. С паузами, но без пересчёта — наоборот, легко ошибиться при сравнении с аналитикой.
  • Тест с ноутбука. Домашний канал и процессор упираются в свой предел раньше сайта.
  • Проверка «на копии» на другом сервере. Результат верен только для того сервера, на котором проводился тест. Копия на слабом или, наоборот, свободном сервере покажет не ту вместимость.
  • Забытые внешние сервисы. Если страница во время сборки ждёт ответа от службы доставки или склада, предел сайта может определять чужой сервис. Нагружать его вместе с вашим сайтом без согласия владельца нельзя — такие обращения на время теста лучше отключить или заменить заглушкой.

Как увеличить число посетителей, которое выдерживает сайт?

  1. Включите кэширование страниц, которые одинаковы для всех: главная, каталог, карточки, статьи. Обычно это даёт самый большой эффект за минимальные деньги.
  2. Найдите самую медленную страницу. Часто это поиск или фильтры каталога: ускорение одного запроса к базе данных может поднять предел всего сайта.
  3. Вынесите статические файлы в сеть доставки контента (CDN) или хотя бы настройте их отдачу веб-сервером с долгим кэшированием в браузере и сжатием.
  4. Проверьте лимиты хостинга и число рабочих процессов. Иногда хватает сменить тариф или перейти с виртуального хостинга на свой виртуальный сервер (VPS).
  5. Повторите тест с той же нагрузкой и сравните результаты. Меняйте по одной вещи за раз, чтобы видеть, что именно помогло.

Больше причин и способов их исправить — в статье почему сайт тормозит при наплыве посетителей.

Как узнать вместимость своего сайта в LoadSure?

Добавьте сайт и подтвердите права на него — DNS-записью, файлом или мета-тегом. Сервис сам соберёт сценарий из главной, каталога, карточек, поиска и статических файлов, а если подключить Яндекс Метрику — возьмёт доли страниц из ваших данных. Выберите ситуацию: «Распродажа», если нужно проверить конкретный всплеск, или «Найти предел», если нужно узнать максимум. Через несколько минут в отчёте будет ответ одной фразой — сколько человек на сайте одновременно он держит уверенно, — а ниже список того, что исправить в первую очередь. Начать можно с страницы о нагрузочном тестировании сайта или прямо с главной.

Частые вопросы

Сколько посетителей выдерживает обычный хостинг?

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

1 000 посетителей в день — это много?

Для нагрузки важна не суточная посещаемость, а пиковый час и число людей на сайте одновременно. 1 000 визитов в сутки при длительности визита в несколько минут — это обычно единицы или десятки человек одновременно.

Как посчитать, сколько людей на сайте одновременно?

Визиты в пиковый час умножьте на среднюю длительность визита в минутах и разделите на 60. Например, 1 800 визитов в час при визите 3 минуты — около 90 человек одновременно.

Какой запас нужен перед распродажей?

Хорошая практика — проверить сайт на нагрузку в полтора-два раза выше ожидаемого пика: прогнозы трафика редко бывают точными.

Почему виртуальных посетителей в тесте меньше, чем людей в отчёте?

Виртуальный посетитель делает паузы между страницами короче, чем человек, и нагружает сайт сильнее. Поэтому отчёт пересчитывает нагрузку в «людей на сайте». Это оценка: поведение вашей аудитории может отличаться.

Ещё по теме