使用 Compute Engine 的一般提示


本頁說明 Compute Engine 使用問題的實用提示。

如需協助疑難排解特定的問題,請參閱以下其中一節:

檢視不同的回應格式

Google Cloud CLI 會呼叫 REST API 來執行大部分的動作。準確列出的結果中只會顯示特定指令傳回的最重要資訊。如要查看不同的回應格式,請使用 --format 旗標,這個旗標會以不同的輸出格式顯示回應,包括 jsonyamltext。舉例來說,如要查看 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 中的支援和操作資訊主頁。因此,我們不建議您在資源名稱中使用任何機密資訊。

與網際網路通訊

只有在下列兩個條件都成立的情況下,執行個體才能直接存取網際網路:

執行個體也可以透過 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 位元組。