Gra mobilna klienta stworzona w Unity 3D napotykała poważne problemy ze stabilnością backendu: serwery okresowo się zawieszały i restartowały, autoskalowanie działało nieprzewidywalnie, a gracze byli często rozłączani w trakcie rozgrywki.
W trakcie projektu zidentyfikowaliśmy i rozwiązaliśmy kluczowe problemy:
- Wycieki pamięci – Naprawiliśmy wycieki pamięci na serwerze gry, który powodował awarie po osiągnięciu limitu RAM.
- Problemy z autoskalowaniem:
- Trigger-y skalowania w górę były ustawione zbyt wysoko, co wydłużało okresy przeciążenia serwerów. Zmniejszyliśmy je i wprowadziliśmy harmonogram utrzymania wyższej minimalnej liczby serwerów w godzinach szczytu.
- Serwery skalowały się w dół bez prawidłowego odprowadzania użytkowników, co kończyło ich aktywne sesje. Wdrożyliśmy mechanizm łagodnego odprowadzania z odpowiednim opóźnieniem, aby umożliwić naturalne zakończenie sesji.
- Codzienne wymuszone rozłączenia były wynikiem błędnej konfiguracji systemu automatycznych aktualizacji, który restartował Web serwer. Przekonfigurowaliśmy system tak, aby przeładowywał (hot-reload) Web serwer bez zrywania połączeń i tylko wtedy, gdy aktualizacje były dostępne.
Wykorzystane technologie:
AWS EC2 Auto Scaling, Linux, Bash, TypeScript, Nginx