League of Legends r.

Z czego wynikały awarie serwerów europejskich? Riot milczy na temat rekompensaty

Ostatnie awarie serwerów dały się we znaki. Czy dostaniemy rekompensatę? Raczej się na to nie szykuje...

Jak Riot wykrył awarię?

W pierwszej kolejności w Centrum Operacji Sieciowych zauważono drastyczny spadek liczby gier.

Następnie próbowano zdefiniować, którego systemu (np. dobieranie przeciwników, rozkład obciążenia, serwer gry) dotyczył problem. Było to jednak trudne do określenia – systemy działały poprawnie, jednak docierało do nich niewiele ruchu. Dostępne dane wskazywały na duże problemy w tym zakresie, co widoczne jest na poniższym wykresie, który prezentuje liczbę połączeń przychodzących, które docierają do jednego z hostów kontenerowych Riotu (czyli pojedynczego, wysokowydajnego komputera, obsługującego szereg mniejszych aplikacji potocznie określanego jako “kontener”; to na tych maszynach opiera się cały system umożliwiający funkcjonowanie LoL-a). Dwa z tych hostów otrzymywały zbyt dużo połączeń.

Dlaczego tak się stało?

Problem dotknął szczególnego rodzaju kontenera wykonującego funkcję brzegową (ang. “edge”), której celem jest przyjmowanie ruchu przychodzącego z Internetu, filtrowanie go i przesyłanie do właściwej usługi zaplecza. Pojawiły się gwałtowne skoki obciążenia, które poskutkowały trudnościami z korzystaniem z LoL-a. Przyczyny tych skoków były następujące:

  • Zbyt wysoka liczba żądań wysłanych do jednej usługi, co wynikało z tego, że żądanie było zgłaszane w błędny sposób i nie dochodziło do skutku, tylko było cały czas ponawiane.

  • Problem, w ramach którego dochodziło do interakcji naszego systemu kontenerów z używaną wersją systemu operacyjnego (przeciek pamięci wewnątrz systemu operacyjnego, który – jeśli trwał wystarczająco długo – mógł spowodować zatrzymanie najważniejszych funkcji systemowych). Problem ten jest znany od pewnego czasu i 60% kontenerów otrzymało już ulepszenia z nim związane. Niestety aktualizacja grup w Europie i Ameryce Łacińskiej wciąż trwała.
  • Pech.

No i ostatnia rzecz: nie mieliśmy szczęścia. Korzystamy z oprogramowania, które grupuje kontenery w segmenty mieszczące się na pojedynczym komputerze-hoście. Zawiera ono zaprogramowane ograniczenia, które mają oddzielać obciążające sieć usługi brzegowe w zestawie kontenerów przynależących do konkretnego odłamka. Nie mieliśmy jednak wpływu na sytuacje, w których usługi brzegowe z odmiennych odłamków mogły trafić na ten sam komputer, w związku z czym usługi brzegowe z EUW mogły zaleźć się tuż obok usług brzegowych z EUNE. Zwielokrotnienie obciążenia pojedynczego komputera okazało się katalizatorem, który zamienił dwa wyżej opisane problemy w poważny incydent.

W przypadku wszystkich awarii doszło do tego, że kontenery brzegowe z co najmniej trzech odłamków zostały umieszczone w tym samym hoście. Ruch pochodzący z nieprawidłowych żądań, spotęgowany przez pochodzący z wielu odłamków ruch trafiający do tego samego hosta, oraz wyciek pamięci w systemie operacyjnym skutkujący „obezwładnieniem” tego komputera — oto czynniki, które doprowadziły do dysfunkcji odłamka i poważnej awarii.

Jak problem zostanie rozwiązany?

Każda przyczyna może zostać usunięta.

Co już zrobiono?

  • Poprawiono kod powodujący wysyłanie wadliwych żądań.
  • Zmieniono sposób działania mechanizmu ponawiania żądań w taki sposób, by nie dochodziło do ich kumulacji.
  • Zaktualizowano oprogramowanie kontenerowe obsługujące wszystkie odłamki.
  • Wprowadzono procedurę alarmową: zawsze będzie dostępna osoba, która będzie miała za zadanie likwidować ręcznie zbyt duże obciążenie.

Co będzie zrobione w przyszłości?

  • Usługi brzegowe zostaną przeniesione do zapewniającego równowagę systemu, który będzie w stanie równomiernie je rozdzielać w ramach odłamka.

Rekompensata?

Temat nie został poruszony – co prawdopodobnie oznacza, że jej nie otrzymamy…