Мы в социальных сетях:

О нас | Помощь | Реклама

© 2008-2025 Фотострана

Реклама
Получить

Азартный питомец

А твой питомец уже стал азартным? Играй вместе с друзьями!
Вы подписаны

Что делать и кто виноват при ошибке связи

Итак, давно пора расставить все точки над i и ответить на самые волнующие вопросы.

 

Ошибка связи - что это и с чем ее едят.

 

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

Однако все ли так на самом деле?

 

Для начала нужно понять - чем отличаются разные типы игр. Традиционно принято считать само приложение, которое открывается у Вас в браузере - "клиентом", а обработчики событий игры, которые находятся на нашей стороне - "сервером". В разных типах игры взаимодействие клиент-сервер является различным.

 

Типы игры "Заработай фишки" и "Рейтинг" являются "событийной моделью" - взаимодействие происходит в момент события (нажали на стакан - ушел запрос на сервер - пришел ответ от сервера - запрос завершен - клиент обработал и выбросил фишки, как пример). То есть броски, старт игр и прочее.

 

Тип игры "Играй с друзьями" является "постоянной моделью". В момент старта игры и Ваш клиент и клиент соперника подключается на определенный канал сервера и остается соединен с ним до конца игры, все события проходят через эти каналы.

 

Какие проблемы могут подстерегать в "событийных играх" - в определенные моменты (оооочень редко) сервер может испытывать перегрузки, если на него падает слишком много событий (в обычном режиме мы обрабатываем порядка 40-120 запросов в секунду per server).

Самая частая ошибка - в случае, если сервер долго не отвечает, клиент считает, что сервер умер и надо бы его потыкать палочкой. И делает запрос ещё раз. В этот момент сервер обрабатывает первый запрос, и, искренне надеясь на честность клиента, отдает ему результаты. Тут прилетает второй запрос. Сервер долго чешет репку - что ему прислал клиент, и, не найдя слов (приличных), вываливает ошибку. Это совсем не страшно - все игры "событийного типа" можно восстановить.

 

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

 

Виноваты ли в этом разработчики? На 2% да. Есть тут и часть наших багов, которые мы периодически исправляем. В 98% виновата плохая связь.

 

И тут мы подходим к самому главному заблуждению, которое уверенно используют 99% игроков, искренне считая себя правыми. "Но ведь остальные приложения работают, вашу мать, это ваше, мля мля мля глючит!!! Все уроды!!!". Нет, нет и ещё раз нет. У каждого приложения есть свои игровые сервера, которые стоят на технических площадках в разных странах и городах. Если у Вашего провайдера отличная связность с Германией, но плохая с Нидерландами - у Вас будут прекрасно работать игры, расположенные на DE серверах и безбожно тормозить игры на Нидерландских.

 

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

Если кратко рассматривать как происходит запрос на сервер - то все очень просто. Все обращения в сети идут по IP-адресу сервера (это уникальный адрес сервера в сети - так же как и у Вас есть свой город, улица, дом, корпус и квартира).

Первоначально Ваш компьютер спрашивает у специального DNS сервера (сервер доменных имен) IP-адрес сервера - например - скажи где "живет" сервер с названием "www.сервер_игры.net" ? В ответ он получает IP-адрес - например 46.57.68.79

После этого компьютер через сеть провайдера обращается к данному ip-адресу. Но, нельзя забывать, что практически никогда мы не можем обратиться к серверу напрямую, наш запрос идет через т.н. "транзитные узлы".

 

Образно говоря.

Я ищу мой игровой сервер (Юлю), чтобы сделать запрос.

Мой провайдер говорит - первый транзитный узел Вася.

Я иду к Васе - "Вась, слышь чо, а где Юлька?" - "Я не знаю. Но знает Коля".

"Коль, скажи плиз, где Юля" - "Спроси у Маши, она последняя ее видела"

"Маша, привет, Юлька где? Коля сказал ты знаешь" - "Агааааа. В кафехе она".

"Юля, твою ж дивизию, где ты ходишь???" - запрос дошел до сервера.

 

Это самое яркое представление маршрута до сервера с Вашего компьютера. Все отлично. При таком раскладе игра тормозить не будет. Но что произойдет, если Вася будет говорить по телефону и попросит подождать, Коля уйдет на обед, а Машу припрет подумать в одиночестве в туалете?

Разумеется маршрут будет прокладываться с задержкой. Разумеется, будут ошибки связи. Виноваты ли мы в них? Ответ один - НЕТ.

 

Как можно узнать, есть ли на Вашей стороне ошибки связи с нашими серверами. (Наши сервера располагаются в Праге, Чехия).

 

Для windows - Пуск - Выполнить - в появившемся окне набираете cmd - открывается командная строка.

Для висты и 7  - Пуск - В окошке где написано "Начать поиск" набираете cmd - щелкаете на программе появившейся в меню - открывается командная строка.

Для линуксоидов - Бородатые сами знают, что вписать в консоли)

 

Вводите первую команду - 

ping 94.198.240.231

Получаете время ответа сервера - то есть то время, за которое сигнал сбегал за пивом запросом и вернулся. Чем меньше - тем лучше. До 100 мс - нормально. До 300 - терпимо. Больше 500 - есть смысл позвонить провайдеру с вопросом "А чочо я вам бабло плачу, а пинг до Чехии дерьмо?", или вообще его сменить от греха подальше)

 

tracert 94.198.240.231 для виндоус©

traceroute 94.198.240.231 для линуксоидов

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

Если в списке больше 15 узлов - есть повод насторожиться по поводу провайдера. Долбайте лучше их - толку будет больше.

 

В качестве примера я приведу показания с 2 разных провайдеров одного города Санкт-Петербурга (это для тех, кто любит покричать что все работает).

 

Итак, провайдер бизнес-центра.

 

 

local# ping 94.198.240.231          

PING 94.198.240.231 (94.198.240.231): 56 data bytes

64 bytes from 94.198.240.231: icmp_seq=0 ttl=58 time=45.493 ms

64 bytes from 94.198.240.231: icmp_seq=1 ttl=58 time=44.733 ms

64 bytes from 94.198.240.231: icmp_seq=2 ttl=58 time=45.001 ms

 

 

Пинг 44-45 ms, для соединения между странами - ну будем считать все хорошо.

 

 

local# traceroute 94.198.240.231

traceroute to 94.198.240.231 (94.198.240.231), 64 hops max, 40 byte packets

 1  192.168.20.1 (192.168.20.1)  0.380 ms  0.322 ms  0.314 ms

Пришли на роутер

 2  85-114-24-129.obit.ru (85.114.24.129)  2.591 ms  1.204 ms  0.915 ms

 3  vi-x-x-068.76-1.spb.obit.ru (85.114.28.5)  1.846 ms  15.125 ms  1.882 ms

 4  te2-13-010.BRC4.spb.obit.ru (85.114.0.2)  2.058 ms  2.934 ms  2.139 ms

Отправились в Чехию

 5  gw-interfiber.fra.obit.ru (217.79.3.177)  51.190 ms  51.269 ms  50.310 ms

Пришли на Французскую точку обмена трафиком

 6  in-gw80GE-2nd-floor-upl-interfiber.upl.cz (78.108.176.38)  52.332 ms  46.091 ms  50.338 ms

Пришли на сервер

 7  94.198.240.231 (94.198.240.231)  44.415 ms  47.177 ms  41.416 ms

 

 

В принципе, все показатели в норме, все работает прекрасно, 7 "хоп"ов в списке.

 

Провайдер Билайн, домашний интернет.

 

 

C:\Users\Root>ping 94.198.240.231

 

Обмен пакетами с 94.198.240.231 по с 32 байтами данных:

Ответ от 94.198.240.231: число байт=32 время=79мс TTL=51

Ответ от 94.198.240.231: число байт=32 время=80мс TTL=51

Ответ от 94.198.240.231: число байт=32 время=83мс TTL=51

 

 

Пинг уже 79-83 ms. Нормально для "событийных" игр, но в "постоянных" могут быть ошибки.

 

 

C:\Users\Root>tracert 94.198.240.231

 

Трассировка маршрута к zonk [94.198.240.231]

с максимальным числом прыжков 30:

 

  1     1 ms     1 ms     1 ms  my.router [192.168.1.1] - пришли на wi-fi )

  2     *        *        *     Превышен интервал ожидания для запроса.

  3     2 ms     2 ms     2 ms  89.179.21.10

  4     2 ms     2 ms     2 ms  spb-195-190-110-61.sovintel.ru [195.190.110.61]

 

  5    37 ms    37 ms    37 ms  cat04.spb.gldn.net [195.190.127.5] - дошли до точки обмена трафиком

  6    13 ms    13 ms    13 ms  mx01.Stockholm.gldn.net [62.141.76.225] - пришли в Стокгольм О_о

  7   105 ms    58 ms    61 ms  mx01.Frankfurt.gldn.net [194.186.80.233] - Франкфурт

  8    95 ms    93 ms     *     cat2-ancotel-de.interfiber.cz [80.81.194.36] - Из Германии в Чехию

  9    92 ms    91 ms    95 ms  in-gw80GE-2nd-floor-upl-interfiber.upl.cz [78.108.176.38]

 10    96 ms    94 ms    97 ms  zonk [94.198.240.231] - пришли на сервер.

 

 

В принципе, все показатели чуть хуже нормы, все работает стабильно, 10 "хоп"ов в списке.

Событийки будут играть хорошо, а вот в постоянных есть риск.

 

И уж конечно стоит вспомнить эпический маршрут Караганда-сервер, когда сигнал шел по маршруту Караганда-Астана-Москва(4000 километров расстояния!)-Франкфурт-Прага.

 

Так вот о чем это я - прежде чем кричать, что разработчики дураки - проверьте связь.

7 нояб. в 00:51 | 172 комментария
Показать ещё
Ваш комментарий
Отправить
Наверх