Questa pagina descrive alcuni suggerimenti che potrebbero esserti utili in caso di problemi con l'utilizzo di Compute Engine.
Per ricevere assistenza per la risoluzione di problemi specifici, consulta una delle seguenti sezioni:
- Per la procedura di risoluzione dei problemi generali relativi alle istanze, ad esempio se l'istanza non si avvia, consulta Risolvi i problemi di creazione, aggiornamento ed eliminazione delle VM.
- Per la procedura di risoluzione dei problemi relativi alle istanze Windows, consulta Risoluzione dei problemi relativi alle istanze Windows.
Visualizzazione di diversi formati di risposta
Google Cloud CLI esegue la maggior parte delle sue azioni effettuando chiamate
alle API REST. I risultati con codice formattato mostrano solo le informazioni più importanti
restituite da un comando specifico. Per visualizzare i diversi formati di risposta,
utilizza il flag --format che mostra la risposta in diversi formati di output,
tra cui json, yaml e text. Ad esempio, per visualizzare un elenco di istanze in
JSON, utilizza --format json:
gcloud compute instances list --format json
Visualizzazione dei log di gcloud compute
La gcloud CLI crea e memorizza i log in un file di log su cui puoi
eseguire query, che si trova in $HOME/.config/gcloud/logs. Per visualizzare il file di log più recente su
un sistema operativo basato su Linux, esegui:
$ less $(find ~/.config/gcloud/logs | sort | tail -n 1)
Il file di log include informazioni su tutte le richieste e le risposte effettuate utilizzando
lo strumento gcloud CLI.
Per eliminare automaticamente in maniera definitiva i file di log creati da gcloud CLI,
utilizza la proprietà max_log_days,
che imposta il numero massimo di giorni per conservare i file di log prima dell'eliminazione.
L'impostazione predefinita è 30 giorni. Se imposti il valore di questa proprietà su 0, viene disattivata
la garbage collection dei log e i file di log non vengono eliminati.
gcloud config set core/max_log_days DAYS_TO_RETAIN_LOGS
Disattiva il logging dei file della gcloud CLI:
Il file $HOME/.config/gcloud/logs occupa spazio sul file system locale.
La quantità di log generati potrebbe superare lo spazio sul file system locale, causando problemi come:
- Utilizzo dello spazio che raggiunge il 100% nell'istanza.
- Impossibile eseguire i comandi di logging della gcloud CLI perché non c'è più spazio per creare un nuovo file nel file system locale.
Per modificare il comportamento della gcloud CLI e disattivare il logging
dei file, utilizza la proprietà
disable_file_logging:
gcloud config set core/disable_file_logging True
Selezione dei nomi delle risorse
Quando selezioni i nomi per le risorse, tieni presente che questi nomi visualizzabili potrebbero essere visibili nelle dashboard di assistenza e operative di Compute Engine. Per questo motivo, consigliamo di utilizzare nomi di risorse che non espongano informazioni sensibili.
Comunicazione con internet
Un'istanza ha accesso diretto a internet solo se entrambe le seguenti condizioni sono vere:
- L'istanza ha un indirizzo IP esterno.
- La rete VPC dell'istanza utilizza una route predefinita il cui hop successivo è il gateway internet predefinito.
Le istanze possono accedere a internet anche indirettamente, connettendosi tramite Cloud NAT o un proxy basato su istanze. Per ulteriori considerazioni, inclusa la configurazione delle regole firewall, consulta i Requisiti di accesso a internet.
Connessioni inattive
I componenti di reteGoogle Cloud non mantengono aperte le connessioni inattive indefinitamente. Per evitare interruzioni delle connessioni, considera come i seguenti componenti gestiscono le connessioni inattive:
Le voci della tabella di monitoraggio delle connessioni di Cloud Next Generation Firewall vengono rimosse dopo che un flusso è rimasto inattivo per 10 minuti.
Cloud NAT ha impostazioni di timeout che si applicano alle connessioni inattive per TCP, UDP e ICMP. I timeout TCP includono il timeout di inattività della connessione stabilita TCP, il timeout di inattività della connessione transitoria TCP e il timeout
TIME_WAITTCP.I bilanciatori del carico di rete passthrough monitorano le connessioni utilizzando le proprie regole. Per saperne di più, consulta Distribuzione del traffico per i bilanciatori del carico di rete passthrough interni e Distribuzione del traffico per i bilanciatori del carico di rete passthrough esterni regionali.
Per evitare che le connessioni TCP inattive vengano interrotte, puoi configurare TCP keepalive, che mantiene attive le connessioni inviando pacchetti periodici (probe) per reimpostare i timeout di inattività:
Assicurati che le applicazioni client o server creino socket con l'opzione
SO_KEEPALIVE. Consulta la documentazione dell'applicazione o della libreria software per scoprire come aprire i socket con l'opzioneSO_KEEPALIVE.Configura i seguenti parametri keepalive TCP:
Il periodo di inattività, che rappresenta il tempo che deve trascorrere tra l'ultimo pacchetto non keepalive e il primo probe keepalive in una sequenza.
L'intervallo keepalive, che rappresenta il tempo tra ogni probe keepalive TCP.
I probe keepalive, che rappresentano il numero totale di probe keepalive TCP non riconosciuti inviati in una sequenza prima che la connessione venga considerata interrotta.
Le applicazioni client o server possono impostare i parametri keepalive TCP utilizzando
opzioni socket come TCP_KEEPIDLE, TCP_KEEPINTVL e TCP_KEEPCNT oppure
puoi impostare i parametri keepalive TCP per il tuo sistema operativo.
Gli esempi riportati di seguito mostrano come impostare un periodo di inattività di 60 secondi per il sistema operativo:
Linux
Esegui questo comando:
$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5Per assicurarti che le impostazioni rimangano invariate dopo un riavvio, aggiungile al
file /etc/sysctl.conf. Questi parametri del kernel si applicano sia a IPv4 che a IPv6, anche se contengono ipv4 nel nome.
Per ulteriori informazioni, consulta la guida di Linux TCP Keepalive.
macOS
Esegui questo comando:
$ sudo sysctl -w net.inet.tcp.always_keepalive=1 net.inet.tcp.keepidle=60000 net.inet.tcp.keepinit=60000 net.inet.tcp.keepintvl=60000
Windows
Nel percorso Registry
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\,
aggiungi le seguenti impostazioni utilizzando il tipo di dato
DWORD
o modifica i valori se le impostazioni esistono già:
KeepAliveInterval: 1000 KeepAliveTime: 60000 TcpMaxDataRetransmissions: 10
Accesso a Compute Engine come utente SSH diverso
Per impostazione predefinita, lo strumento a riga di comando gcloud compute utilizza la variabile $USER per
aggiungere utenti al file /etc/passwd per la connessione alle istanze
tramite SSH. Puoi specificare un utente diverso utilizzando il flag
--ssh-key-file PRIVATE_KEY_FILE quando esegui
il comando gcloud compute ssh. Ad esempio:
gcloud compute ssh example-instance --ssh-key-file my-private-key-file
Per saperne di più, consulta la
documentazione di riferimento di gcloud.
Interazione con la console seriale
Puoi abilitare l'accesso interattivo alla console seriale di un'istanza in modo da poter collegare e risolvere i problemi delle istanze tramite la console seriale.
Per saperne di più, consulta la sezione Risoluzione dei problemi utilizzando la console seriale.
Prevenzione della frammentazione dei pacchetti nelle istanze create da immagini personalizzate
La rete VPC ha un'unità massima di trasmissione (MTU)
predefinita di 1460 byte per le immagini Linux e Windows Server. Tuttavia, l'MTU
della rete può essere modificato. Per maggiori dettagli, consulta la
panoramica delle unità massime di trasmissione nella documentazione
VPC.
Quando crei applicazioni client che comunicano con le istanze Compute Engine tramite socket UDP, puoi evitare la frammentazione impostando la dimensione massima dei dati del datagramma UDP su 28 byte in meno rispetto all'MTU della rete. Ad esempio, se l'MTU della rete è 1460 byte, puoi inviare fino a 1432 byte di dati UDP per pacchetto senza frammentazione. Se l'MTU della rete è 1500 byte, puoi inviare fino a 1472 byte di dati UDP senza frammentazione. I 28 byte vengono utilizzati per un'intestazione del pacchetto IPv4 (20 byte) e un'intestazione del datagramma UDP (8 byte). Puoi impostare l'MTU della rete su un massimo di 8896 byte.
Diagnostica delle prestazioni e della CPU
Picchi di latenza o arresti anomali imprevisti nell'applicazione sulle moderne piattaforme CPU potrebbero indicare blocchi del bus della CPU. Questi problemi si verificano quando vengono eseguite operazioni atomiche su memoria non allineata.
Per identificare il problema, esamina l'output della porta seriale per la seguente voce di log: x86/split lock detection: #DB: <process_name>/<pid> took a bus_lock trap
at address: 0x<address>.
L'output della console seriale consente il rilevamento di eventi a livello hardware, ad esempio trappole di blocco del bus della CPU, che indicano operazioni di memoria non allineate che possono ridurre le prestazioni del sistema.
Per saperne di più, vedi Risolvere i problemi relativi ai blocchi del bus della CPU.