Debug dei problemi del parco istanze di Amazon GameLift Servers - Amazon GameLift Servers

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à.

Debug dei problemi del parco istanze di Amazon GameLift Servers

Questo argomento fornisce indicazioni su come risolvere i problemi relativi alle EC2 flotte Amazon GameLift Servers gestite.

Problemi di creazione del parco istanze

Quando crei una EC2 flotta gestita, il Amazon GameLift Servers servizio 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 Amazon GameLift Servers la creazione della flotta 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 il supporto Amazon GameLift Servers o pubblicare una domanda nel forum.

Scaricamento e convalida della build

Durante questa fase, Amazon GameLift Servers ottiene la build del server di gioco caricata, estrae i file ed esegue gli eventuali 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 GameLift Serversnon riesco a ottenere il file di build compresso (evento). FLEET_BINARY_DOWNLOAD_FAILED Verifica che sia possibile accedere alla posizione di archiviazione della build, che tu stia creando una flotta nella Regione AWS stessa della build e che Amazon GameLift Servers disponga delle autorizzazioni corrette per accedervi.

  • Amazon GameLift Serversnon riesco a 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 Servers 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 Amazon GameLift Servers servizio tramite Server SDK.

Nota

In questa fase, puoi accedere in remoto a un'istanza del parco istanze per esaminare ulteriormente i problemi. Consultare Connessione remota a Amazon GameLift Servers flotte di istanze.

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 il parco macchine non passa allo stato Attivo, è probabile che il processo del server non riesca a comunicare con il Amazon GameLift Servers servizio. Verifica che il server di gioco stia effettuando le chiamate SDK del server corrette (vediInizializza il processo del server):

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

    • Il processo del server non riesce a notificare Amazon GameLift Servers 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 peering VPC non è riuscita. Per i parchi istanze creati con una connessione peering VPC (consulta Per configurare il peering VPC con un nuovo parco istanze), la connessione peering VPC viene effettuata durante la fase Activating (In fase di attivazione). Se una connessione peering VPC non riesce per qualsiasi motivo, il nuovo parco istanze non potrà passare allo stato Active (Attivo). È possibile monitorare l'esito positivo o negativo della richiesta di peering chiamando. describe-vpc-peering-connections Assicurati di verificare che esista un'autorizzazione di peering VPC 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 Amazon GameLift Servers console (modifica le impostazioni di allocazione della capacità del parco veicoli) o chiamando il comando. AWS CLI 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.

Le azioni VPC non sono autorizzate.

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

Amazon GameLift ServersRealtimeproblemi relativi alla flotta

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 script non vengono selezionati dal parco istanze dei server Realtime.

  • 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.

Questa è quasi certamente una conseguenza dell'errore di chiamata di processEnding nello 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 che esegue la sessione di gioco non viene mai liberato così da consentire di avviarne una nuova e le nuove sessioni di gioco possono avviarsi solo quando vengono attivati i nuovi server Realtime. Inoltre, gli aggiornamenti per lo script Realtime non hanno impatto sulle sessioni di gioco già in esecuzione.

Per evitare che si verifichi una situazione simile, gli script devono fornire un meccanismo di attivazione per la chiamata processEnding. Come illustrato negli Amazon GameLift ServersRealtimeesempio di script, 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 non se non si verifica questo scenario, sono disponibili alcune soluzioni alternative per sbloccare i server Realtime. Il trucco consiste nell'attivare il riavvio dei processi del Realtime server, o delle istanze sottostanti, del parco istanze. In questo caso, chiude automaticamente le sessioni di gioco per te. Amazon GameLift Servers Una volta liberati, i server Realtime possono avviare nuove sessioni di gioco utilizzando la versione più recente 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. Questa operazione cancellerà tutte le sessioni di gioco esistenti e consentirà di avviare 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. Consultare Connessione remota a Amazon GameLift Servers flotte di istanze.

Se scegli di non includere un modo per chiamare processEnding nello script Realtime, esistono un paio di situazioni delicate che potrebbero verificarsi anche quando il parco istanze si 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 script.