Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déboguer les incidents de flotte Amazon GameLift Servers
Cette rubrique fournit des conseils sur la manière de résoudre les problèmes liés à vos EC2 flottes Amazon GameLift Servers gérées.
Problèmes de création de flotte
Lorsque vous créez une EC2 flotte gérée, le Amazon GameLift Servers service lance un flux de travail qui crée la flotte, déploie les EC2 instances avec la version de votre serveur de jeu installée et lance les processus du serveur de jeu sur chaque instance. Pour une description détaillée, voirComment fonctionne Amazon GameLift Servers la création de flottes. Une flotte ne peut pas héberger de sessions de jeu ni de joueurs tant qu'elle n'a pas atteint le statut Actif.
Vous pouvez résoudre les problèmes qui empêchent les flottes de devenir actives en identifiant la phase de création de flotte au cours de laquelle le problème s'est produit et en consultant les événements et les journaux de création de flotte. Si les journaux ne fournissent pas d'informations utiles, il est possible que le problème soit dû à une erreur de service interne. Dans ce cas, essayez de créer à nouveau la flotte. Si le problème persiste, essayez de télécharger à nouveau le build du jeu pour corriger une éventuelle corruption du fichier). Vous pouvez également contacter le support Amazon GameLift Servers ou poser une question sur le forum.
- Téléchargement et validation du build
-
Au cours de cette phase, Amazon GameLift Servers récupère le build de votre serveur de jeu téléchargé, extrait les fichiers et exécute les scripts d'installation. Si la création d'une flotte échoue au cours de ces phases, examinez les événements de la flotte et les journaux pour identifier le problème. Les causes possibles incluent :
-
Amazon GameLift ServersImpossible d'obtenir le fichier de construction compressé (événement
FLEET_BINARY_DOWNLOAD_FAILED
). Vérifiez que l'emplacement de stockage du build est accessible, que vous créez une flotte Région AWS identique au build et que Amazon GameLift Servers vous disposez des autorisations appropriées pour y accéder. -
Amazon GameLift ServersImpossible d'extraire les fichiers de compilation (événement
FLEET_CREATION_EXTRACTING_BUILD
). -
Un script d'installation contenu dans les fichiers de compilation n'a pas pu s'exécuter correctement (événement
FLEET_CREATION_FAILED_INSTALLER
).
-
- Développement des ressources de flotte
-
Les problèmes rencontrés au cours de cette phase concernent généralement l'allocation et le déploiement des ressources de la flotte. Les causes possibles incluent :
-
Le type d'instance demandé n'est pas disponible.
-
Le type de flotte demandé (Spot ou On-Demand) n'est pas disponible.
-
- Activation des processus du serveur de jeu
-
Au cours de cette phase, Amazon GameLift Servers tente un certain nombre de tâches et teste des éléments clés, notamment la viabilité du serveur de jeu, les paramètres de configuration d'exécution et la capacité du serveur de jeu à se connecter au Amazon GameLift Servers service à l'aide du SDK du serveur.
Note
Au cours de cette phase, vous pouvez accéder à distance à une instance de flotte pour étudier les problèmes de manière plus approfondie. Consultez Connectez-vous à distance à Amazon GameLift Servers instances de flotte.
Les problèmes possibles incluent :
Les processus du serveur ne démarrent pas. Cela suggère un problème lié aux paramètres de configuration d'exécution de la flotte (événements
FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND
ouFLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE
. Vérifiez que vous avez correctement défini le chemin de lancement et les paramètres de lancement facultatifs.-
Les processus du serveur commencent à s'exécuter, mais le parc ne s'active pas. Si les processus du serveur démarrent et s'exécutent correctement, mais que le parc ne passe pas au statut Actif, cela est probablement dû au fait que le processus du serveur ne parvient pas à communiquer avec le Amazon GameLift Servers service. Vérifiez que votre serveur de jeu effectue les bons appels au SDK du serveur (voirInitialiser le processus du serveur) :
-
Le processus du serveur ne parvient pas à s'initialiser (événement
SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT
). Le processus du serveur n'est pas correctement appeléInitSdk()
. -
Le processus du serveur ne parvient pas à avertir Amazon GameLift Servers lorsqu'il est prêt à héberger une session de jeu (événement
SERVER_PROCESS_PROCESS_READY_TIMEOUT
). Le processus du serveur s'est initialisé mais n'a pas été appeléProcessReady()
à temps.
-
-
Une demande de connexion d'appairage VPC a échoué. Pour les flottes créées avec une connexion d'appairage de VPC (voir Pour configurer l'appairage de VPC avec une nouvelle flotte), l'appairage de VPC est effectué au cours de cette phase d'activation. Si un appairage de VPC échoue pour une raison quelconque, la nouvelle flotte n'obtiendra pas le statut Actif. Vous pouvez suivre le succès ou l'échec de la demande de peering en appelant describe-vpc-peering-connections. Assurez-vous de vérifier qu'il existe une autorisation d'appairage VPC valide (describe-vpc-peering-authorizations, car les autorisations ne sont valides que pendant 24 heures).
Problèmes liés aux processus serveur
- Les processus serveur démarrent mais échouent rapidement ou indiquent une intégrité médiocre.
-
Hormis les problèmes liés à votre version de génération de jeu, cela peut se produire lorsque vous essayez d'exécuter trop de processus serveur simultanément sur l'instance. Le nombre optimal de processus simultanés dépend des exigences relatives au type d'instance et aux ressources de votre serveur de jeux. Essayez de réduire le nombre de processus simultanés, lequel est défini dans la configuration d'exécution de la flotte, pour voir si les performances s'améliorent. Vous pouvez modifier la configuration d'exécution d'une flotte à l'aide de la Amazon GameLift Servers console (modifier les paramètres d'allocation de capacité de la flotte) ou en appelant la AWS CLI commande update-runtime-configuration.
Problèmes de suppression de flotte
- Une flotte ne peut pas être résiliée en raison d'un nombre d'instances maximum.
-
Le message d'erreur indique que la flotte en cours de suppression dispose encore d'instances actives, ce qui n'est pas autorisé. Vous devez d'abord mettre à l'échelle une flotte en la réduisant à zéro instance active. Cela s'effectue en définissant manuellement le nombre d'instances souhaitées de la flotte à « 0 », puis en attendant que la réduction prenne effet. Veillez à désactiver la scalabilité automatique, qui contrecarrera les paramètres manuels.
- Les actions de VPC ne sont pas autorisées.
-
Ce problème ne concerne que les flottes pour lesquelles vous avez spécifiquement créé des connexions d'appairage VPC (voir. Peering VPC pour Amazon GameLift Servers Ce scénario se produit car le processus de suppression d'une flotte inclut également la suppression du VPC de la flotte et de toutes les connexions d'appairage VPC. Vous devez d'abord obtenir une autorisation en appelant l'API du service for Amazon GameLift Servers CreateVpcPeeringAuthorization() ou en utilisant la commande AWS CLI
create-vpc-peering-authorization
. Une fois que vous avez l'autorisation, vous pouvez supprimer la flotte.
Amazon GameLift ServersRealtimeproblèmes liés à la flotte
- Sessions de jeu zombie : elles commencent à exécuter un jeu, mais ne se terminent jamais.
-
Vous pouvez observer ces problèmes dans les scénarios suivants :
-
Les mises à jour des scripts ne sont pas collectées par les serveurs Realtime de la flotte.
-
La flotte atteint rapidement sa capacité maximale et n'est pas réduite lorsque l'activité des joueurs (telle que les nouvelles demandes de session de jeu) diminue.
Ceci découle de façon quasi-certaine d'un échec de l'appel à
processEnding
dans votre script Realtime. La flotte est activée et les sessions de jeu démarrées, mais il n'y a pas de méthode pour les arrêter. Par conséquent, le serveur Realtime qui exécute la session de jeu n'est jamais libéré pour en démarrer une nouvelle, et de nouvelles sessions de jeu ne peuvent démarrer que lorsque de nouveaux serveurs Realtime sont activés. En outre, les mises à jour du script Realtime n'affectent pas les sessions de jeu déjà en cours d'exécution, mais seulement les nouvelles.Pour éviter que cela se produise, les scripts doivent fournir un mécanisme pour déclencher un appel
processEnding
. Comme illustré dans Amazon GameLift ServersRealtimeexemple de script, une solution consiste à programmer un délai d'expiration de session inactive, tel que si aucun joueur n'est connecté pendant un certain temps, le script met un terme à la session de jeu actuelle.Toutefois, si vous suivez ce scénario, quelques solutions de contournement vous permettent de débloquer vos serveurs Realtime. L'astuce consiste à déclencher le redémarrage des processus du Realtime serveur, ou des instances de parc sous-jacentes. Dans ce cas, ferme Amazon GameLift Servers automatiquement les sessions de jeu pour vous. Une fois que les serveurs Realtime sont libérés, ils peuvent démarrer de nouvelles sessions de jeu à l'aide de la dernière version du script Realtime.
Il existe deux méthodes pour y parvenir, en fonction de l'ampleur du problème :
-
Mettre à l'échelle la totalité de la flotte en la réduisant. Cette méthode est la plus simple à mettre en œuvre mais a un effet étendu. Mettez à l'échelle la flotte en la réduisant à zéro instance, attendez la réduction complète de la flotte, puis remettez-la à l'échelle en l'augmentant. Cela permet d'effacer toutes les sessions de jeu existantes et vous permet de repartir à zéro avec le script Realtime mis à jour le plus récemment.
-
Accéder à distance à l'instance et redémarrer le processus. Il s'agit d'une bonne option si vous n'avez que quelques processus à corriger. Si vous êtes déjà connecté à l'instance, par exemple aux journaux de processus ou de débogage, cette méthode peut être la plus rapide. Consultez Connectez-vous à distance à Amazon GameLift Servers instances de flotte.
-
Si vous choisissez de ne pas inclure de manière d'appeler processEnding
dans votre script Realtime, il existe quelques situations épineuses qui peuvent se produire, même lorsque la flotte devient active et que les sessions de jeu sont démarrées. Tout d'abord, une session de jeu en cours d'exécution ne se termine pas. Par conséquent, le processus serveur qui exécute cette session de jeu n'est jamais libre de démarrer une nouvelle session de jeu. Deuxièmement, le serveur Realtime ne collecte aucune mise à jour de script.