Optymalizacja backendu gry mobilnej Unity 3D

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