Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Debuggen von Amazon GameLift Servers-Flottenproblemen
Dieses Thema enthält Anleitungen zur Lösung von Problemen mit Ihren Amazon GameLift Servers verwalteten EC2 Flotten.
Probleme bei der Erstellung von Flotten
Wenn Sie eine verwaltete EC2 Flotte erstellen, initiiert der Amazon GameLift Servers Service einen Workflow, der die Flotte erstellt, EC2 Instances bereitstellt, auf denen Ihr Spieleserver-Build installiert ist, und Spieleserver-Prozesse auf jeder Instanz startet. Eine ausführliche Beschreibung finden Sie unter. So funktioniert die Amazon GameLift Servers Flottenerstellung Eine Flotte kann erst dann Spielsitzungen und Spieler hosten, wenn sie den Status Aktiv erreicht hat.
Sie können Probleme beheben, die verhindern, dass Flotten aktiv werden, indem Sie die Phase der Flottenerstellung identifizieren, in der das Problem aufgetreten ist, und die Ereignisse und Protokolle zur Flottenerstellung überprüfen. Wenn die Protokolle keine nützlichen Informationen enthalten, ist das Problem möglicherweise auf einen internen Servicefehler zurückzuführen. Versuchen Sie in diesem Fall erneut, die Flotte zu erstellen. Wenn das Problem weiterhin besteht, versuchen Sie, den Spiel-Build erneut hochzuladen, um eine mögliche Dateibeschädigung zu beheben. Sie können sich auch an den Amazon GameLift Servers-Support wenden oder im Forum eine Frage stellen.
- Laden Sie den Build herunter und validieren Sie ihn
-
Amazon GameLift ServersRuft während dieser Phase den hochgeladenen Spieleserver-Build ab, extrahiert die Dateien und führt alle Installationsskripte aus. Schlägt die Flottenerstellung in diesen Phasen fehl, schauen Sie sich die Flottenereignisse und -protokolle an, um das Problem zu lokalisieren. Mögliche Gründe hierfür sind:
-
Amazon GameLift Serverskann die komprimierte Build-Datei (Ereignis
FLEET_BINARY_DOWNLOAD_FAILED
) nicht abrufen. Stellen Sie sicher, dass auf den Speicherort des Builds zugegriffen werden kann, dass Sie eine Flotte erstellen, die dem Build entspricht AWS-Region , und dass Sie Amazon GameLift Servers über die richtigen Zugriffsberechtigungen verfügen. -
Amazon GameLift Serverskann die Build-Dateien nicht extrahieren (Ereignis
FLEET_CREATION_EXTRACTING_BUILD
). -
Ein Installationsskript in den Build-Dateien konnte nicht erfolgreich abgeschlossen werden (Ereignis
FLEET_CREATION_FAILED_INSTALLER
).
-
- Ressourcen für die Flotte aufbauen
-
Probleme in dieser Phase betreffen in der Regel die Zuweisung und den Einsatz von Flottenressourcen. Mögliche Gründe hierfür sind:
-
Der angeforderte Instance-Typ ist nicht verfügbar.
-
Der angeforderte Flottentyp (Spot oder On-Demand) ist nicht verfügbar.
-
- Aktivierung von Gameserver-Prozessen
-
In dieser Phase werden eine Reihe von Aufgaben durchgeführt und wichtige Elemente getestet, darunter die Funktionsfähigkeit des Spielservers, die Einstellungen für die Laufzeitkonfiguration und die Fähigkeit des Spielservers, mithilfe des Server-SDK eine Verbindung zum Amazon GameLift Servers Dienst herzustellen. Amazon GameLift Servers
Anmerkung
In dieser Phase können Sie remote auf eine Flotteninstanz zugreifen, um Probleme weiter zu untersuchen. Siehe Stellen Sie eine Remoteverbindung her mit Amazon GameLift Servers Flotteninstanzen.
Zu den möglichen Problemen gehören:
Serverprozesse werden nicht gestartet. Dies deutet auf ein Problem mit den Laufzeitkonfigurationseinstellungen der Flotte hin (Ereignisse
FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND
oderFLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE
. Stellen Sie sicher, dass Sie den Startpfad und die optionalen Startparameter korrekt eingestellt haben.-
Serverprozesse werden gestartet, aber die Flotte kann nicht aktiviert werden. Wenn Serverprozesse erfolgreich gestartet und ausgeführt werden, die Flotte jedoch nicht in den Status Aktiv wechselt, liegt das wahrscheinlich daran, dass der Serverprozess nicht mit dem Amazon GameLift Servers Dienst kommunizieren kann. Vergewissere dich, dass dein Spieleserver die richtigen Server-SDK-Aufrufe durchführt (sieheInitialisieren Sie den Serverprozess):
-
Der Serverprozess kann nicht initialisiert werden (Ereignis
SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT
). Der Serverprozess ruftInitSdk()
nicht erfolgreich auf. -
Der Serverprozess benachrichtigt nicht, Amazon GameLift Servers wenn er bereit ist, eine Spielsitzung (ein Ereignis
SERVER_PROCESS_PROCESS_READY_TIMEOUT
) zu veranstalten. Der Serverprozess wurde initialisiert, aber nichtProcessReady()
rechtzeitig aufgerufen.
-
-
Eine VPC-Peering-Verbindungsanfrage ist fehlgeschlagen. Für Flotten, die mit einer VPC-Peering-Verbindung erstellt werden (siehe So richten Sie VPC-Peering mit einer neuen Flotte ein), erfolgt das VPC-Peering während dieser Activating (Aktivierung) Phasen. Wenn ein VPC-Peering aus irgendeinem Grund fehlschlägt, kann die neue Flotte nicht in den Status Active (Aktiv) wechseln. Sie können den Erfolg oder Misserfolg der Peering-Anfrage nachverfolgen, indem Sie anrufen. describe-vpc-peering-connections Stellen Sie sicher, dass eine gültige VPC-Peering-Autorisierung vorhanden ist (describe-vpc-peering-authorizations, da Autorisierungen nur für 24 Stunden gültig sind.
Probleme mit dem Serverprozess
- Die Serverprozesse starten, werden jedoch nach kurzer Zeit wieder beendet oder laufen nicht richtig rund.
-
Ein solches Systemverhalten muss nicht zwangsläufig auf Probleme mit Ihrem Spiele-Build hinweisen, sondern es kann sich auch ergeben, wenn auf der Instance zu viele Serverprozesse gleichzeitig ausgeführt werden. Die optimale Anzahl an gleichzeitigen Prozessen hängt gleichermaßen von den Instance-Typ und den Ressourcenanforderungen Ihrer Spiel-Server ab. Verringern Sie die Anzahl der gleichzeitigen Prozesse, die in der Laufzeitkonfiguration der Flotte eingestellt wird, um zu prüfen, ob sich die Leistung verbessert. Sie können die Laufzeitkonfiguration einer Flotte entweder über die Amazon GameLift Servers Konsole ändern (bearbeiten Sie die Einstellungen für die Kapazitätszuweisung der Flotte) oder indem Sie den Befehl aufrufen. AWS CLI update-runtime-configuration
Probleme bei der Flottenlöschung
- Die Flotte kann aufgrund der maximalen Anzahl von Instances nicht beendet werden.
-
Die Fehlermeldung zeigt an, dass die zu löschende Flotte noch aktive Instances hat, was nicht zulässig ist. Sie müssen zunächst eine Flotte auf null aktive Instances reduzieren. Dies geschieht, indem Sie die gewünschte Anzahl der Instances der Flotte manuell auf "0" festlegen und dann darauf warten, dass die Skalierung greift. Stellen Sie sicher, dass Sie die automatische Skalierung deaktivieren, da dies den manuellen Einstellungen entgegenwirkt.
- VPC-Aktionen sind nicht autorisiert.
-
Dieses Problem gilt nur für Flotten, für die Sie speziell VPC-Peering-Verbindungen erstellt haben (siehe. VPC-Peering für Amazon GameLift Servers Dieses Szenario tritt auf, weil das Löschen einer Flotte auch das Löschen der VPC der Flotte und aller VPC-Peering-Verbindungen umfasst. Sie müssen zuerst eine Autorisierung einholen, indem Sie die Service-API for Amazon GameLift Servers CreateVpcPeeringAuthorization() aufrufen oder den AWS CLI-Befehl verwenden
create-vpc-peering-authorization
. Sobald Sie die Berechtigung haben, können Sie die Flotte löschen.
Amazon GameLift ServersRealtimeProbleme mit der Flotte
- Zombie-Spielsitzungen: Sie haben ein Spiel gestartet und ausgeführt, aber sie enden nie.
-
Dieses Problem entsteht wahrscheinlich in einem der folgenden Szenarien:
-
Script-Updates werden nicht von den Realtime-Servern der Flotte übernommen.
-
Die Flotte erreicht schnell die maximale Kapazität und verkleinert sich nicht, wenn die Spieleraktivitäten (z. B. neue Spielsitzungsanfragen) abnimmt.
Dies ist mit ziemlicher Sicherheit das Ergebnis eines fehlgeschlagenen
processEnding
-Aufrufes in Ihrem Realtime-Script. Obwohl die Flotte aktiv wird und Spielsitzungen gestartet werden, gibt es keine Möglichkeit, diese anzuhalten. Infolgedessen wird der Realtime-Server, auf dem die Spielsitzung ausgeführt wird, nie freigegeben, um eine neue Spielsitzungen zu starten. Neue Spielsitzungen können nur gestartet werden, wenn neue Realtime-Server gestartet werden. Darüber hinaus haben Aktualisierungen des Realtime-Scripts keine Auswirkungen auf bereits laufende Spielsitzungen.Um dies zu verhindern, müssen Scripts einen Mechanismus bereitstellen, der einen
processEnding
-Aufruf auslöst. Wie in der Amazon GameLift ServersRealtimeBeispiel für ein Skript veranschaulicht, besteht eine Möglichkeit darin, einen Idle-Timeout zu programmieren, bei dem das Script die aktuelle Spielsitzung beendet, wenn für eine bestimmte Zeitspanne kein Spieler verbunden ist.Wenn dieses Szenario zutrifft, gibt es jedoch ein paar Workarounds, um Ihre Realtime-Server "aufzuräumen". Der Trick besteht darin, die Realtime Serverprozesse — oder die zugrunde liegenden Flotteninstanzen — neu zu starten. In diesem Fall werden die Spielsitzungen Amazon GameLift Servers automatisch für Sie geschlossen. Sobald Realtime-Server freigegeben sind, können sie neue Spielsitzungen mit der neuesten Version des Realtime-Scripts starten.
Es gibt eine Reihe von Methoden, um dies zu erreichen (abhängig davon, wie umfassend das Problem ist):
-
Skalieren Sie die gesamte Flotte herunter. Diese Methode ist die einfachste, hat aber eine weitreichende Wirkung. Skalieren Sie die Flotte auf null Instances, warten Sie, bis die Flotte vollständig herunterskaliert ist, und skalieren Sie sie dann wieder hoch. Dadurch werden alle bestehenden Spielsitzungen gelöscht. Sie können mit dem zuletzt aktualisierten Realtime-Script neu beginnen.
-
Remotezugriff auf die Instance und Neustart des Prozesses. Dies ist eine gute Option, wenn Sie nur wenige Prozesse reparieren müssen. Wenn Sie bereits an der Instance angemeldet sind (z. B. um Protokolle zu verfolgen oder zum debuggen), dann kann dies die schnellste Methode sein. Siehe Stellen Sie eine Remoteverbindung her mit Amazon GameLift Servers Flotteninstanzen.
-
Wenn Sie sich gegen den Aufruf von processEnding
in Ihrem Realtime-Script entscheiden, gibt es einige problematische Situationen, die auch auftreten können, wenn die Flotte aktiv wird und Spielsitzungen gestartet werden. Erstens endet eine laufende Spielsitzung nicht. Infolgedessen ist der Serverprozess, der diese Spielsitzung ausführt, nie frei. Er kann somit keine neue Spielsitzung starten. Zweitens nimmt der Realtime-Server keine Script-Updates entgegen.