本頁說明 Compute Engine 使用問題的實用提示。
如需協助疑難排解特定的問題,請參閱以下其中一節:
- 如需執行個體一般問題 (例如執行個體無法啟動) 的疑難排解步驟,請參閱一般疑難排解一文。
- 如需 Windows 執行個體問題的疑難排解步驟,請參閱 Windows 執行個體疑難排解。
檢視不同的回應格式
Google Cloud CLI 會呼叫 REST API 來執行大部分的動作。準確列出的結果中只會顯示特定指令傳回的最重要資訊。如要查看不同的回應格式,請使用 --format
旗標,這個旗標會以不同的輸出格式顯示回應,包括 json
、yaml
和 text
。舉例來說,如要查看 JSON 格式的執行個體清單,請使用 --format json
:
gcloud compute instances list --format json
查看 gcloud compute 記錄檔
gcloud CLI 會建立記錄並將記錄儲存在位於 $HOME/.config/gcloud/logs
的記錄檔中,方便您查詢。如要查看 Linux 作業系統中的最新記錄檔,請執行下列指令:
$ less $(find ~/.config/gcloud/logs | sort | tail -n 1)
記錄檔中包含您使用 gcloud CLI
工具發出的所有要求和相關回應資訊。
如要自動清除 gcloud CLI 建立的記錄檔案,請使用 max_log_days
屬性,設定記錄檔案保留的最大天數。預設設定為 30 天。如果您將這個屬性值設為 0,系統就會關閉記錄垃圾收集功能,且不會刪除記錄檔案。
gcloud config set core/max_log_days DAYS_TO_RETAIN_LOGS
停用 gcloud CLI 檔案記錄:
檔案 $HOME/.config/gcloud/logs
會佔用本機檔案系統的空間。產生的記錄檔數量可能會超過本機檔案系統的空間量,進而導致下列問題:
- 執行個體的空間使用率達到 100%。
- 執行 gcloud CLI 記錄指令失敗,因為本機檔案系統中沒有空間可用來建立新檔案。
如要變更 gcloud CLI 行為並停用檔案記錄功能,請使用 disable_file_logging
屬性:
gcloud config set core/disable_file_logging True
挑選資源名稱
在選擇資源名稱時,請留意這些好記名稱可能會顯示在 Compute Engine 中的支援和操作資訊主頁。因此,我們不建議您在資源名稱中使用任何機密資訊。
與網際網路通訊
只有在下列兩個條件都成立的情況下,執行個體才能直接存取網際網路:
- 執行個體具有外部 IP 位址。
- 執行個體的虛擬私人雲端網路使用下一個躍點為預設網際網路閘道的預設路徑。
執行個體也可以透過 Cloud NAT 或執行個體 Proxy 間接存取網際網路。如需其他考量事項 (包括防火牆規則設定),請參閱「網際網路存取需求條件」。
閒置連線
Google Cloud VPC 網路會針對具有連線概念的 IP 通訊協定 (例如 TCP) 實作 10 分鐘的連線追蹤。也就是說,只要在過去 10 分鐘內至少傳送或接收一個封包,系統就會允許與已建立連線相關聯的傳入封包。如果連線 10 分鐘或更久未傳送或接收任何封包,系統就會移除閒置連線的追蹤項目。連線的追蹤項目遭到移除後, Google Cloud 會在傳送至少一個新的傳出封包之前,禁止額外的傳入封包。這項連線追蹤功能適用於所有來源和目的地,包括內部和外部 IP 位址。
如要避免閒置連線,請執行下列操作:
將作業系統 TCP 保持運作參數設為 少於 10 分鐘的時間範圍。這樣可確保在時間範圍內至少傳送一個封包。
請確認開啟 TCP 連線的應用程式已啟用
SO_KEEPALIVE
選項。
以下範例說明如何設定作業系統 TCP 保持運作參數,間隔值為一分鐘。請參閱應用程式或軟體程式庫的說明文件,瞭解如何設定應用程式或軟體程式庫以使用 SO_KEEPALIVE
。
Linux
請執行下列指令:
$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
/etc/sysctl.conf
檔案。
詳情請參閱 Linux TCP 保持運作使用說明。
macOS
請執行下列指令:
$ 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
在登錄檔路徑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
之下,以 DWORD 資料類型新增下列設定,或是編輯既有設定的值:
KeepAliveInterval: 1000 KeepAliveTime: 60000 TcpMaxDataRetransmissions: 10
以其他 SSH 使用者的身分存取 Compute Engine
根據預設,gcloud compute
指令列工具會使用 $USER
變數將使用者新增至 /etc/passwd
檔案,以便透過 SSH 連結至虛擬機器執行個體。您可以在執行 gcloud compute ssh
指令時以 --ssh-key-file PRIVATE_KEY_FILE
旗標指定其他使用者。例如:
gcloud compute ssh example-instance --ssh-key-file my-private-key-file
詳情請參閱 gcloud
參考說明文件。
與序列主控台互動
您可以啟用對執行個體序列主控台的互動式存取權,如此就能透過序列主控台連線並對執行個體進行疑難排解。
如要進一步瞭解,請參閱與序列主控台互動。
避免透過自訂映像檔建立的執行個體發生封包分段情況
虛擬私有雲網路的預設最大傳輸單位 (MTU) 為 1460
位元組,適用於 Linux 映像檔和 Windows Server 映像檔。不過,網路 MTU 可以變更。詳情請參閱虛擬私有雲說明文件中的最大傳輸單位總覽。
建立會透過 UDP 通訊端與 Compute Engine 執行個體進行通訊的用戶端應用程式時,如果您將 UDP 資料單元資料的最大大小設為比網路 MTU 少 28 位元組,就能避免發生分段情況。舉例來說,如果網路的 MTU 為 1460 個位元組,您最多可傳送 1432 個位元組的 UDP 資料,而不會造成分段。如果網路的 MTU 為 1500 位元組,您最多可以傳送 1472 位元組的 UDP 資料,且不會分割。這 28 個位元組用於 IPv4 封包標頭 (20 個位元組) 和 UDP 資料單元標頭 (8 個位元組)。您可以將網路的 MTU 設定為最多 8896 位元組。