Spokojny początek D-Day w Pax Dei
Dla nas D-Day w Pax Dei rozpoczął się stosunkowo spokojnie. Wszystkie serwery we wszystkich 3 strefach geograficznych były uruchomione, wstępnie rozgrzane i czekały na oczekiwany atak. O godzinie 12:00 UTC pierwsi gracze zaczęli napływać, a podczas rozruchu wszystkie systemy działały dobrze, a nasze systemy monitorujące nie generowały żadnych krytycznych automatycznych alertów.
Problemy z wydajnością serwera w Pax Dei
Po około godzinie zaczęliśmy zauważać, że na serwerach obsługujących niektóre z bardziej zaludnionych stref Pax Dei zaczęła rosnąć alarmująca liczba NPC, co miało proporcjonalny wpływ na wydajność. W tym samym czasie wczesne sygnały, które otrzymaliśmy za pośrednictwem Discorda, zaczęły wspominać o silnych gumowaniach w niektórych strefach, co byłoby oczekiwaną konsekwencją. Ci, którzy znają naszą historię wojskową z alfy, mogą pamiętać, że kiedyś uciekająca populacja królików rzuciła nas na kolana. W tym przypadku nie były to konkretnie króliki, ale bardziej ogólny rój mobów, który najwyraźniej został wywołany przez gęstą i bardzo aktywną populację graczy, a nasza kontrola populacji nie była w stanie nadążać za pojawianiem się mobów.
W ramach tymczasowego rozwiązania podczas rozwiązywania problemów zaczęliśmy identyfikować serwery, które były na krawędzi, i selektywnie je restartować. Oznaczało to krótkie rozłączenie dla graczy podłączonych do tych stref, ale przynajmniej serwer tymczasowo wrócił do normalnego stanu. Na szczęście w poprzednich dniach pracowaliśmy nad ewentualnym naprawieniem tego problemu, choć tak naprawdę nigdy nie byliśmy w stanie odtworzyć tego w warunkach laboratoryjnych. Zdecydowaliśmy się przyspieszyć tę poprawkę, która była poprawką dostępną tylko na serwerze i nie wymagała łatki ze strony klienta. Kompilowanie i wdrażanie poprawki na naszych serwerach testowych zajęło około 2 godzin. Następnie zdecydowaliśmy się wdrożyć ją selektywnie w kilku najgorszych strefach, aby sprawdzić, czy rozwiązało to problem, zanim zastosujemy ją globalnie.
Problemy z odblokowywaniem receptur w Pax Dei
Z Discorda zaczęliśmy również otrzymywać raporty o problemach z odblokowywaniem receptur w Pax Dei, z dużymi opóźnieniami związanymi z powiązanymi operacjami. Patrząc na nasz serwer, wiedzieliśmy już o jednym słabym ogniwie w tym systemie: naszym serwerze Redis, który był używany do replikowania powiadomień o przepisach do wszystkich graczy (wraz z różnymi innymi powiadomieniami, takimi jak stan uszkodzeń członków drużyny itp.). Tego konkretnego serwera nie da się skalować po prostu przez dodanie większej ilości sprzętu, więc jeśli osiągnąłby granice graniczne, musielibyśmy zająć się tym na bardziej podstawowym poziomie. Ponownie moglibyśmy tymczasowo złagodzić problem, uruchamiając ponownie niektóre powiązane usługi, ale natychmiast rozpoczęliśmy pracę nad bardziej trwałą poprawką, która wymaga dokładniejszych testów, zanim będziemy mogli ją wdrożyć.
Problemy z umieszczaniem działek w Pax Dei
Około 16:50 UTC zaczęliśmy otrzymywać raporty od Discorda, że ludzie mieli problemy z umieszczaniem działek w Pax Dei, a niektórzy nie widzieli tego, co zbudowali, mimo że zasoby były nadal zużywane. Pierwotnie, począwszy od regionu Stanów Zjednoczonych, stan ten rozprzestrzenił się również na region UE, ale w dziwny sposób pozostawił region SEA bez szwanku. Ta bitwa zajęła nam najwięcej czasu i była najtrudniejsza do rozwiązania, co doprowadziło do rozwiązania problemu dopiero około 02:00 UTC (D-Day + 1). W tym przypadku winowajcą było połączenie między naszą bazą danych a usługą odpowiedzialną za replikowanie elementów budynków wszystkim graczom w miarę ich budowy. Ta ostatnia usługa jest usługą zarządzaną, która ma pewne wstępnie skonfigurowane limity przydziału, które w pewnym momencie osiągnęliśmy, co doprowadziło do ograniczenia usługi.
W normalnych warunkach nie byłoby to problemem, gdyż możemy dynamicznie zwiększać limit, jednak w tym przypadku, gdy limit został zwiększony i baza danych ponownie zaczęła się z nim komunikować, musiała odbudować bardzo duże zaległości w transakcjach, które się nawarstwiły. Mimo że robiła to pilnie, po prostu nie była w stanie nadrobić zaległości, co doprowadziło do bardzo długich opóźnień pomiędzy utworzeniem elementów składowych a ich replikacją dla klientów. W pewnym momencie mogliśmy zobaczyć godzinne opóźnienie. Zatem dla graczy wyglądało na to, że nie mogli zbudować działki, ale rzeczywistość była taka, że dowiedzieli się, że operacja zakończyła się z ponad godzinnym opóźnieniem. Wszystko to jest bardzo oczywiste, gdy patrzy się z perspektywy czasu, ale rozwiązanie problemu i znalezienie pierwotnej przyczyny zajęło nam trochę czasu. Ponieważ wciąż byliśmy w trybie odkrywania, zdecydowaliśmy się na ostrożność i pozwoliliśmy, aby usługa wyczerpywała się w swoim tempie, aby mieć pewność, że żaden stan gracza nie zostanie utracony, co zajęło kilka godzin. Po znalezieniu pierwotnej przyczyny wprowadziliśmy kilka prostych poprawek w zastosowanej konfiguracji i ponownie uruchomiliśmy powiązane usługi. Stan budynku został niemal natychmiast przywrócony, a następnie wszystkie regiony wróciły do normy.
Rozwiązanie problemów i dalsze kroki w Pax Dei
Podsumowując, wczoraj wieczorem o 03:00 UTC (D-Day + 1), po prawie 24-godzinnej zmianie, wszyscy w Sali Wojennej Pax Dei czuli się zmęczeni, ale szczęśliwi. Wciąż słyszeliśmy odległe pomruki i wiedzieliśmy, że wojna się nie skończyła, ale przynajmniej ustaliliśmy przyczółek i byliśmy gotowi do dalszego działania. W trakcie tego wszystkiego prawie zapomnieliśmy o naszym początkowym zmartwieniu: wydajność serwera strefy ze względu na populację mobów, ale z radością zaobserwowaliśmy, że po zastosowaniu poprawki do wybranych stref wydawało się, że są one pod dobrą kontrolą i faktycznie działają znacznie lepiej niż wcześniej, co było świetną wiadomością. Zatem równolegle do powyższego rozpoczęliśmy ciągłą aktualizację wszystkich serwerów stref we wszystkich naszych regionach, co spowodowało krótkie rozłączenie graczy podczas ponownego uruchamiania stref, ale spowodowało znacznie zdrowszy profil procesora dla wszystkich światów.