War Thunder background
О технических проблемах в прошедшие выходные

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

Теперь немного подробнее о том, что произошло в эти выходные. Один из сервисов входных шлюзов был в работе 375 дней, при плановой перезагрузке на нём поднялась неправильно сконфигурированная версия, которая использовала только одно ядро (что мы выяснили только в воскресенье) и неправильно проксирующая IP-адреса. В первый момент нам показалось, что сервер не справляется с нагрузкой (возросшей от введения новой техники и страны и по причине внимания игроков к мажору), и мы решили как можно скорее нарастить его мощности, переехав на самые мощные из доступных (и самые дорогие) машины в Амазоне. Однако мгновенно это сделать невозможно и сам переезд занял некоторое время. Но даже после его завершения осталась  проблема с неправильной конфигурацией (проксированием IP-адресов и однопоточностью), и сервер считал, что все пользователи, пришедшие через этот сервис, имеют один IP, не мог быстро их «найти» и тормозил. Приблизительно после полуночи по времени Москвы проблема с неправильным проксированием была найдена и через некоторое время устранена, и бои начали собираться. Ночью количество пользователей снижается, и даже то, что прокси работали в одно ядро, уже не мешало работе.

В воскресенье снова увеличилась нагрузка с ростом пользователей и боёв, и мы наконец увидели вторую ошибку конфигурации, а днём починили ошибочную «одноядерность» прокси путём плавного выведения неверно сконфигурированных машин и плавным вводом новых (чтобы не отказывать в сервисе уже играющим пользователям). Этот процесс занял ещё некоторое время. Тут следует заметить, что на самом деле мощности хватало многократно и до ввода самых мощных серверов: это одного ядра не очень хватало, а их там было много. А после апгрейда мы утилизировали только около 6% доступной вычислительной мощности (т.е. 20-кратный запас по мощности от пика).

Выводы

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

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

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

И ещё одна хорошая новость. Зайдите в игру с 4 ноября (14:00 МСК) по 8 ноября (14:00) и получите Премиум усилитель +30% опыта на 5 боёв.

Читайте также:
Встречайте крупное обновление «Танец драконов»!
  • 10 сентября 2024
Скидки, редкие танки и декаль ко Дню образования КНР
  • 1 октября 2024
Полигон: Al-Khalid-I. История Су-24. Вестник обновления «Танец драконов»
  • 29 сентября 2024
Thunder Show: ПОСЛЕДНИЙ ГЕРОЙ
  • 27 сентября 2024

Комментарии (132)

Новость больше не доступна для комментирования