Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
tristamoff
7 лет назад

502 Bad gateway, 504 Gateway Timeout. Знакомо? Что делать и кто виноват.

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

Для начала я схематично изображу процесс от запроса пользователя и до ответа сервера.

  • Канал - это грубо говоря провод, которым сервер подключен к интернету. Ширина канала-грубо говоря сечение провода. Чем больше канал - тем больше пользователей может одновременно подключиться к серверу.
  • Web-сервер(ПО) - это программное обеспечение сервера, в которое входит операционная система, веб сервер, интерпритатор, база данных и многое другое.
  • Процессор(ЦП) - по большому счёту обыкновенный процессор, как в вашем ПК. Он принимает решение о том, какую информацию прочитать с жесткого диска и как использовать оперативную память.
  • Жесткий диск(ПЗУ) - хард, на котором хранятся скрипты, фото, стили, вёрстка и прочая статика.
  • Оперативная память(ОЗУ) - быстродействующая память, предназначенная для временного хранения информации для быстрого доступа к ней.

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

Самый простой пример - вот обратились вы по адресу golos.io - этим самым вы посылаете запрос на сервер.

Ваш запрос идёт по каналу. Допустим, что ширина канала позволяет одновременно пропустить через себя 1000 запросов. Если посетителей больше-то они физически не смогут попасть на сервер и часть из них будет ожидать. пока другие пользователи освободят канал. В такой ситуации сайт начинает тормозить. Вопрос - как долго вы будете ждать своей очереди? Это зависит от вашего браузера(так как он посылает запрос), от вашего ПК, ОС, от интернет провайдера.
Если браузер так и не дождётся своей очереди - он выдаст ошибку "превышено время ожидания ответа" или что-то в этом роде.

Допустим ширина канала достаточна и вы успешно попали на сервер.
В этом случае ПО сервера посмотрит на ваш запрос и решит что-же ему с вами делать. Например вы запрашиваете главную страницу сайта. Для того, чтобы её сгенерировать - серверу нужно обратится к жесткому диску, чтобы найти скрипт. Если жесткий диск откровенно плохой,обслуживает очень много запросов или сильно изношен - он будет работать медленно и вы опять же можете словить тормоза сайта или веб сервер и вовсе не дождётся ответа, тогда вы можете получить ошибку Gateway Timeout. То есть сервер слишком долго пытался обработать запрос. И чтобы ваш запрос не остался висеть на веки вечные - по истечении определённого времени сервер прекращает попытки обслужить запрос. Этот таймаут выставляется в конфигурации ПО.

Так что если вы видите такую ошибку - это не вы виноваты, не надо вам оплачивать более дорогой тариф у вашего интернет провайдера. Попробовать с другого браузера или почистить куки - конечно же тоже не поможет:)

Чтобы снизить нагрузку на жёсткий диск - разработчики перекладывают часть информации в ОЗУ, тем самым ускоряя работу приложения.

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

Ошибка Bad gateway - это внутренняя ошибка сервера. Она может быть даже тупо из-за опечатки программиста, который писал приложение. Так же ошибку может выдать неправильная логика работы скриптов. Например программист прописал запрос к несуществующей таблице в базе данных или удалил эту таблицу, а запрос исправить забыл. Ещё может просто закончиться память, к примеру.
Если на сайте было очень много посетителей - то созданная ими нагрузка могла вывести из строя скажем базу данных и тогда все посетители всегда будут получать ошибку.
Да и сотни других причин. Проблема опять же не на стороне посетителя.

Почему же так происходит? Почему 1000 посетителей могут вывести из строя сервер? А 100 посетителей могут? А миллион?

Этот количественный показатель зависит от множества факторов.

Примем, что на сервер поступило 100 запросов(посетителей). Для каждого запроса требуется 10 мегабайт оперативной памяти,50 запросов на считывание с диска и 0,1 секунда процессорного времени(это время, которое потратил процессор сервера на обработку задачи).
Тогда на обслуживание всех запросов уйдёт 10 секунд, 1000 мегабайт ОЗУ и 5000 запросов к жесткому диску. Если мощность сервера укладывается в эти значения с запасом - всё будет работать быстро. Если запросы съедает порядка 70% мощности сервера - то возможны тормоза. Если ресурсов сервера реально меньше - то работать сервер будет очень медленно, а часть запросов он может вообще не обработать.

Собственно в этом и заключается смысл в выборе сервера той или иной конфигурации.

Вообще все ошибки имеют код в виде трёхзначного числа.

  • Ошибки с кодом 100-199 - это сообщения информационного характера, по-хорошему это не ошибки даже.
  • 200-299 - это код, говорящий об успешном выполнении запроса. Если 200 - то всё отлично.
  • 300-399 - говорит о перенаправлении(редирект), то есть сервер не отдаст вам ответ, а говорит о том, что забрать его надо по другому адресу.
  • 400-499 - ошибка запроса. Например невалидный запрос, слишком много запросов, отказ в доступе или документ попросту не найден на сервере.
  • 500-599 - это уже внутренние ошибки сервера.
    Полный список можно посмотреть в Википедии

Можно ли обезопасить себя, купив более мощный сервер - да, можно, но это не панацея.

Лично я пользуюсь VPS от Flops , вот их тарифы, они впринципе как и у любой другой компании, предоставляющей аренду VPS

  • Облачный 512 – 1 vCPU / 512 RAM / 16 GB HDD / 30 Gb Traffic – 250 руб./мес.;
  • Облачный 1024 – 1 vCPU / 1024 RAM / 32 GB HDD / 60 Gb Traffic – 500 руб./мес.;
  • Облачный 2024 – 2 vCPU / 2048 RAM / 64 GB HDD / 90 Gb Traffic – 1 000 руб./мес.;
  • Облачный 4096 – 2 vCPU / 4096 RAM / 128 GB HDD / 120 Gb Traffic – 2 000 руб./мес.;
  • Облачный 8192 – 4 vCPU / 8192 RAM / 256 GB HDD / 150 Gb Traffic – 4 000 руб./мес.;
  • Облачный 16384 – 8 vCPU / 16384 RAM / 512 GB HDD / 180 Gb Traffic – 8 000 руб./мес.

Если хочется просто попробовать как оно - за 250 руб/мес вполне можно взять.


Но гораздо более важную роль играет то, как написано ваше приложение(сайт в нашем случае), как сконфигурирован сервер. Если всё сделать грамотно -то можно обслуживать очень большое количество посетителей, имея относительно недорогой сервер, но об этом в следующий раз.

14
71.715 GOLOS
На Golos с January 2017
Комментарии (1)
Сортировать по:
Сначала старые