Esegui il debug dei problemi relativi alla GameLift flotta Amazon - Amazon GameLift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui il debug dei problemi relativi alla GameLift flotta Amazon

Questo argomento fornisce indicazioni su come risolvere i problemi con le EC2 flotte GameLift gestite da Amazon.

Problemi di creazione del parco istanze

Quando crei una EC2 flotta gestita, il GameLift servizio Amazon avvia un flusso di lavoro che crea la flotta, distribuisce EC2 istanze con la build del server di gioco installata e avvia i processi del server di gioco su ciascuna istanza. Per una descrizione dettagliata, consulta. Come funziona la creazione GameLift della flotta Amazon Una flotta non può ospitare sessioni di gioco e giocatori finché non raggiunge lo stato Attivo.

Puoi eseguire il debug dei problemi che impediscono alle flotte di diventare attive identificando la fase di creazione della flotta in cui si è verificato il problema ed esaminando gli eventi e i registri di creazione della flotta. Se i registri non offrono informazioni utili, è possibile che il problema sia dovuto a un errore interno del servizio. In questa situazione, prova a creare nuovamente la flotta. Se il problema persiste, prova a caricare nuovamente la build del gioco (per risolvere il possibile danneggiamento del file). Puoi anche contattare l' GameLift assistenza Amazon o pubblicare una domanda sul forum.

Scaricamento e convalida della build

Durante questa fase, Amazon GameLift ottiene la build del server di gioco caricata, estrae i file ed esegue tutti gli script di installazione. Se la creazione della flotta fallisce durante queste fasi, consulta gli eventi e i registri della flotta per individuare il problema. Tra le cause possibili sono incluse:

  • Amazon non GameLift riesce a ottenere il file di build compresso (eventoFLEET_BINARY_DOWNLOAD_FAILED). Verifica che sia possibile accedere alla posizione di archiviazione della build, che tu stia creando una flotta nella Regione AWS stessa build e che Amazon GameLift disponga delle autorizzazioni corrette per accedervi.

  • Amazon non è in GameLift grado di estrarre i file di build (eventoFLEET_CREATION_EXTRACTING_BUILD).

  • Uno script di installazione nei file di build non è stato completato correttamente (eventoFLEET_CREATION_FAILED_INSTALLER).

Costruire risorse per la flotta

I problemi durante questa fase di solito riguardano l'allocazione e l'impiego delle risorse della flotta. Tra le cause possibili sono incluse:

  • Il tipo di istanza richiesto non è disponibile.

  • Il tipo di parco veicoli richiesto (Spot o On-Demand) non è disponibile.

Attivazione dei processi del server di gioco

Durante questa fase, Amazon GameLift sta tentando una serie di attività e testando elementi chiave, tra cui la fattibilità del server di gioco, le impostazioni di configurazione del runtime e la capacità del server di gioco di connettersi al GameLift servizio Amazon tramite il Server. SDK

Nota

In questa fase, puoi accedere in remoto a un'istanza del parco istanze per esaminare ulteriormente i problemi. Per informazioni, consulta Connessione remota alle istanze GameLift della flotta Amazon.

I problemi possibili includono:

  • I processi del server non iniziano a funzionare. Ciò suggerisce un problema con le impostazioni di configurazione del runtime del parco macchine (eventi FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND oFLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE. Verifica di aver impostato correttamente il percorso di lancio e i parametri di lancio opzionali.

  • I processi del server iniziano a funzionare, ma la flotta non riesce ad attivarsi. Se i processi del server vengono avviati ed eseguiti correttamente, ma la flotta non passa allo stato Attivo, una causa probabile è che il processo del server non riesce a comunicare con il GameLift servizio Amazon. Verifica che il server di gioco stia effettuando le SDK chiamate al server corrette (vediInizializza il processo del server):

    • Il processo del server non riesce a inizializzarsi (eventoSERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT). Il processo server non sta chiamando InitSdk() correttamente.

    • Il processo del server non riesce a notificare ad Amazon GameLift quando è pronto per ospitare una sessione di gioco (eventoSERVER_PROCESS_PROCESS_READY_TIMEOUT). Il processo del server è stato inizializzato ma la chiamata non è stata effettuata ProcessReady() in tempo.

  • Una richiesta di connessione VPC peering non è riuscita. Per le flotte create con una connessione VPC peering (vediPer configurare il peering VPC con un nuovo parco istanze), il VPC peering viene eseguito durante queste fasi di attivazione. Se un VPC peering fallisce per qualsiasi motivo, la nuova flotta non passerà allo stato Attivo. Puoi monitorare l'esito positivo o negativo della richiesta di peering chiamando. describe-vpc-peering-connections Assicurati di verificare che esista un'autorizzazione VPC peering valida (describe-vpc-peering-authorizations, poiché le autorizzazioni sono valide solo per 24 ore).

Problemi dei processi del server

I processi del server si avviano, ma si interrompono dopo breve tempo o sono poco stabili.

Oltre a problemi con la build del gioco, questo problema si può verificare quanto tenti di eseguire nell'istanza troppi processi del server contemporaneamente. Il numero ottimale di processi contemporanei dipende dal tipo di istanza e dai requisiti di risorse del server di gioco. Prova a ridurre il numero di processi contemporanei, impostati nella configurazione di runtime del parco istanze, per vedere se vi è un miglioramento delle prestazioni. Puoi modificare la configurazione di runtime di una flotta utilizzando la GameLift console Amazon (modifica le impostazioni di allocazione della capacità della flotta) o chiamando il AWS CLI comando update-runtime-configuration.

Problemi di eliminazione del parco istanze

Non è possibile terminare il parco istanze a causa del conteggio istanze massimo.

Il messaggio di errore indica che il parco istanze in fase di eliminazione dispone ancora di istanze attive, situazione non consentita. È prima necessario ridimensionare il parco istanze a zero istanze attive. Questa operazione viene eseguita impostando manualmente il conteggio istanze desiderato del parco istanze su "0" e quindi attendendo che il dimensionamento abbia effetto. Assicurati di disattivare il dimensionamento automatico, operazione che contrasterà le impostazioni manuali.

VPCle azioni non sono autorizzate.

Questo problema si applica solo alle flotte per le quali sono state appositamente create connessioni di VPC peering (vedi. Peering VPC per Amazon GameLift Questo scenario si verifica perché il processo di eliminazione di una flotta include anche l'eliminazione della flotta VPC e di eventuali connessioni peering. VPC Devi prima ottenere un'autorizzazione chiamando il GameLift servizio Amazon API CreateVpcPeeringAuthorization() o utilizzando il AWS CLI comandocreate-vpc-peering-authorization. Una volta ottenuta l'autorizzazione, è possibile eliminare il parco istanze.

Problemi relativi alla flotta di server in tempo reale

Sessioni di gioco zombie: avviano ed eseguono un gioco, ma non terminano mai.

È possibile riscontrare questo problema, così come uno qualsiasi dei seguenti scenari:

  • Gli aggiornamenti degli script non vengono rilevati dai server in tempo reale della flotta.

  • Il parco istanze raggiunge rapidamente il numero massimo di capacità e non effettua il dimensionamento quando l'attività dei giocatori (ad esempio, nuove richieste di sessione di gioco) diminuisce.

Questo è quasi certamente il risultato della mancata chiamata processEnding corretta dello script Realtime. Anche se il parco istanze si attiva e le sessioni di gioco vengono avviate, non vi è alcun modo di arrestarle. Di conseguenza, il server Realtime su cui è in esecuzione la sessione di gioco non viene mai liberato per avviarne una nuova e le nuove sessioni di gioco possono iniziare solo quando vengono attivati nuovi server Realtime. Inoltre, gli aggiornamenti allo script Realtime non influiscono sulle sessioni di gioco già in esecuzione, ma solo su una sessione.

Per evitare che si verifichi una situazione simile, gli script devono fornire un meccanismo di attivazione per la chiamata processEnding. Come illustrato negli Esempio di script Realtime Servers, uno dei modi è programmare un timeout delle sessioni inattive in cui lo script terminerà l'attuale sessione di gioco, se nessun giocatore è connesso per un determinato periodo di tempo.

Tuttavia, se rientri in questo scenario, ci sono un paio di soluzioni alternative per sbloccare i server Realtime. Il trucco consiste nell'attivare il riavvio dei processi del server in tempo reale, o delle istanze sottostanti, del parco istanze. In questo caso, chiude automaticamente le sessioni di gioco per te. GameLift Una volta liberati, i server Realtime possono iniziare nuove sessioni di gioco utilizzando l'ultima versione dello script Realtime.

Sono disponibili un paio di metodi per ottenere questo risultato, a seconda di quanto è diffuso il problema:

  • Diminuire l'intero parco istanze. Questo è il metodo più semplice, ma ha un effetto diffuso. Dimensiona il parco istanze fino a zero, attendi la completa diminuzione del parco istanze, quindi aumentalo nuovamente. Ciò cancellerà tutte le sessioni di gioco esistenti e ti consentirà di ricominciare da capo con lo script Realtime aggiornato più di recente.

  • È possibile accedere da remoto all'istanza e riavviare il processo. Si tratta di una buona opzione se il numero di processi da risolvere è ridotto. Se hai già effettuato la registrazione sull'istanza, ad esempio a log di coda o debug, questo potrebbe essere il metodo più rapido. Per informazioni, consulta Connessione remota alle istanze GameLift della flotta Amazon.

Se scegli di non includere la modalità di chiamata processEnding nello script Realtime, ci sono un paio di situazioni difficili che potrebbero verificarsi anche quando la flotta diventa attiva e le sessioni di gioco vengono avviate. In primo luogo, una sessione di gioco in esecuzione non termina. Di conseguenza, il processo del server in cui è in esecuzione tale sessione di gioco non viene mai liberato per consentire di avviare una nuova sessione di gioco. In secondo luogo, il server Realtime non rileva alcun aggiornamento degli script.