GSP045
總覽
在本實作實驗室,您要透過實際情境學習重建環境,並設法提升部分問題網路的效能。
本實驗室的趣味所在,是讓您模擬疑難排解情境,對比各個執行個體來驗證成果,並熟悉提升自家系統效能的步驟。
本實驗室改編自 Colt McAnlis 的網誌文章《Core Count and the Egress problem》(核心數與輸出問題) 和《Internal IP vs External IP》(內部 IP 與外部 IP)。Colt 在 Medium 發表了多篇 Google Cloud 網路效能相關網誌文章。
目標
- 如何使用開放原始碼工具測試網路連線和效能
- 如何使用開放原始碼工具檢查網路流量
- 機器大小如何影響網路效能
事前準備
- 具備 Google Cloud 服務基本知識 (強烈建議先完成 Google Cloud 必備知識實驗室,藉此掌握相關內容)
- 瞭解 Google Cloud 網路和 TCP/IP 基本知識 (強烈建議先完成「Google Cloud 網路」課程的前幾個實驗室,藉此掌握相關內容)
- 熟悉 Unix/Linux 指令列基本知識
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始實驗室及登入 Google Cloud 控制台
-
按一下「Start Lab」按鈕。如果實驗室會產生費用,請在開啟的對話方塊中選取付款方式。右側的「Lab setup and access」面板會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 此實驗室所需的臨時憑證 (使用者名稱和密碼)
- 完成此實驗室所需的其他資訊 (如有)
請注意,實驗室計時器位於頁面頂端附近,會顯示剩餘時間。
-
按一下「Open Google Cloud console」。如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗並排開啟分頁。
注意:頁面顯示「選擇帳戶」對話方塊時,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab setup and access」面板找到「Username」。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab setup and access」面板找到「Password」。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
繼續點按後續頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請按一下「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
本實驗室的目標是說明核心大小與處理量之間的關係,因此在您開始實驗室時,已內建 6 個執行個體。
- 前往 Cloud 控制台,依序點選「導覽選單」>「Compute Engine」>「VM 執行個體」,即可查看執行個體:

注意:實際顯示的執行個體區域和可用區可能與螢幕截圖不同。
連線測試
簡單測試網路連線,確保一切正常運作。
-
在控制台點選 instance-1 名稱旁的「SSH」按鈕,透過 SSH 連至該執行個體。
-
在新開啟的殼層視窗,對另一個執行個體執行下列 ping 指令來偵測連線 (將 <external ip address of instance-2> 換成 instance-2 的外部 IP 位址):
ping -c 5 <external ip address of instance-2>
輸出內容範例:
student-00-aafd1bd9c185@instance-1:~$ ping -c 5 35.194.158.169
PING 35.194.158.169 (35.194.158.169) 56(84) bytes of data.
64 bytes from 35.194.158.169: icmp_seq=1 ttl=76 time=1.89 ms
64 bytes from 35.194.158.169: icmp_seq=2 ttl=76 time=0.409 ms
64 bytes from 35.194.158.169: icmp_seq=3 ttl=76 time=0.542 ms
64 bytes from 35.194.158.169: icmp_seq=4 ttl=76 time=0.557 ms
64 bytes from 35.194.158.169: icmp_seq=5 ttl=76 time=0.559 ms
--- 35.194.158.169 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.409/0.792/1.894/0.554 ms
- 再對另一個執行個體進行連線偵測 (ping)。將
<external ip address of instance-3> 換成 instance-3 的外部 IP 位址,然後執行 ping 指令來偵測連線:
ping -c 5 <external ip address of instance-3>
輸出內容範例:
student-00-aafd1bd9c185@instance-1:~$ ping -c 5 35.194.187.75
PING 35.194.187.75 (35.194.187.75) 56(84) bytes of data.
64 bytes from 35.194.187.75: icmp_seq=1 ttl=64 time=1.59 ms
64 bytes from 35.194.187.75: icmp_seq=2 ttl=64 time=0.336 ms
64 bytes from 35.194.187.75: icmp_seq=3 ttl=64 time=0.338 ms
64 bytes from 35.194.187.75: icmp_seq=4 ttl=64 time=0.302 ms
64 bytes from 35.194.187.75: icmp_seq=5 ttl=64 time=0.270 ms
--- 35.194.187.75 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.270/0.568/1.596/0.514 ms
一切正常,繼續操作吧!
查看防火牆規則
本實驗室也建立了防火牆規則。
- 依序前往「導覽選單」>「虛擬私有雲網路」>「防火牆」,然後點選
iperftesting 防火牆,即可查看這些規則。
防火牆規則 iperftesting 的設定如下:
| 欄位 |
值 |
註解 |
| 名稱 |
iperftesting |
新規則名稱 |
| 目標 |
網路中的所有執行個體 |
|
| 來源 IP 範圍 |
0.0.0.0/0 |
我們會開放防火牆,讓網際網路任何 IP 位址的流量進入 |
| 通訊協定和通訊埠 |
tcp:5001; udp:5001 |
|
| 流量方向 |
輸入 |
|
| 相符時執行的動作 |
允許 |
|
現在可以開始實驗室了。
應用情境 1:網路和 Compute Engine 核心數量
在第一個情境,您將瞭解機器大小如何影響可測量的處理量。
Dobermanifesto 是寵物專屬影片微網誌網路。世界各地的使用者都能上傳、傳送、觀看動物相關影片,以及與影片互動。
將資料輸入/輸出 Compute Engine 後端時,Dobermanifesto 發現頻寬不如預期:

工作 1:重現行為
我們在該可用區同時建立兩個執行個體,並在兩者之間執行 iperf 100 次,嘗試重現這個行為。

這次效能更差!測試顯然有問題。我們需要該公司提供更多資訊和更詳細的重現步驟。
接下來,您要設定情境。
Dobermanifesto 的環境
-
返回 Compute Engine 控制台的 VM 執行個體清單。
-
透過 SSH 連至 instance-1 (1 個 vCPU,3.75 GB),然後執行下列指令來設定 iperf「接收端」:
iperf -s
- 接著透過 SSH 連至
instance-2 (1 個 vCPU,3.75 GB),並產生指向 instance-1 的 iperf 流量:
iperf -c <external ip address of instance-1>
輸出內容範例:
student-00-aafd1bd9c185@instance-2:~$ iperf -c 35.225.180.44
------------------------------------------------------------
Client connecting to 35.225.180.44, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.20.0.4 port 56330 connected with 35.225.180.44 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0000-10.0010 sec 4.66 GBytes 4.00 Gbits/sec
- 返回
instance-1,然後輸入 CTRL + C 結束接收端。
測試環境
-
返回 Compute Engine 控制台,再開啟一個 SSH 視窗並連至 instance-6 (1 個 vCPU,e2-micro,0.6 GB)。
-
執行下列指令,將其設為「接收端」:
iperf -s
輸出內容範例:
student-00-aafd1bd9c185@instance-6:~$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
- 在
instance-2 SSH 視窗,測試與 instance-6 的連線:
iperf -c <internal ip address of instance-6>
輸出內容範例:
student-00-aafd1bd9c185@instance-2:~$ iperf -c 10.40.0.7
------------------------------------------------------------
Client connecting to 10.40.0.7, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.40.0.5 port 54029 connected with 10.40.0.7 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.29 GBytes 1.96 Gbits/sec
- 返回
instance-6,然後輸入 CTRL + C 結束接收端。
結果頻寬似乎增加了!您的測試結果可能也是如此,也可能更低。
在下一節,您將瞭解核心總數如何限制頻寬;當核心數較小 (核心數為 1),頻寬始終都會在 2 Gbit/秒左右,絕不超過這個上限。這導致網路速度緩慢且頻寬受限,與 Dobermanifesto 的情況類似。不過,如果您稍後測試具備 4 個 CPU 的機器,會發現處理量更高。
核心數與 Gbit/秒相關
為何數次測試的結果都差不多?Compute Engine 說明文件指出:
「虛擬機器的傳出流量受限於網路輸出處理量上限,而處理量上限取決於虛擬機器執行個體的 vCPU 數量。在尖峰效能下,每個核心的處理量上限為 2 Gbit/秒 (Gbps)。每增加一個核心,都能提高網路處理量上限,理論上最高可為每部虛擬機器增加 16 Gbps。」
也就是說,網路中的虛擬 CPU 越多,網路處理量就越高。
為瞭解實際運作情形,我們在同一可用區設定不同大小的核心群組,並在這些群組之間執行 iperf 1000 次。

當核心數增加,平均和最大處理量也會隨之提升。透過這個簡單測試,您應能發現高階機器的固定上限就是 16 Gbps。
注意:如果使用多個執行緒 (約 8 個) 執行 iperf,處理量可能超過 10 Gbps,使用 e2-standard-16 或更大機型,處理量可達約 16 Gbps。本實驗室環境沒有這麼大的機器,因此接下來會用多個執行緒來測試。
此外,如果使用 N2、N2D、C2、C2D 系列中費用更高的 VM,即可選用高頻寬級別 1 設定,將處理量提升到 50-100 Gbps。
工作 2:如何提升成效
Dobermanifesto 的網路使用具 1 個 vCPU 的機器。增加核心大小或許可提升 Dobermanifesto 的網路效能。現在來驗證這個理論。
- 透過 SSH 連至
instance-3 (4 個 vCPU,15 GB 記憶體),然後執行下列指令:
iperf -s
輸出內容範例:
student-00-aafd1bd9c185@instance-3:~$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
- 透過 SSH 連至
instance-4 (4 個 vCPU,15 GB 記憶體):
iperf -c <internal ip address of instance-3>
輸出內容範例:
student-00-aafd1bd9c185@instance-4:~$ iperf -c 10.40.0.2
------------------------------------------------------------
Client connecting to 10.40.0.2, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.40.0.4 port 54081 connected with 10.40.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 8.93 GBytes 7.67 Gbits/sec
- 現在使用 4 個執行緒再試一次:
iperf -c <internal ip address of instance-3> -P4
- 接著使用 8 個執行緒再試一次:
iperf -c <internal ip address of instance-3> -P8
- 返回
instance-3,然後輸入 CTRL + C 結束接收端。
以上實驗結果顯示,當伺服器和用戶端都使用 4 個 vCPU,速度將大幅提高:資料傳輸量增加了 6.64 GB,頻寬則提升了 5.71 Gbps。也就是說,使用多執行緒時,效能可達到該核心數的上限。
- 繼續使用
instance-5 測試,這是使用 4 個 vCPU 的高效能機器,執行個體類型為「highcpu-4」。
這個執行個體類型具有更快的 CPU,但記憶體較少。您發現兩者之間有什麼差異嗎?那使用多個執行緒呢?
現在 Dobermanifesto 團隊將決定要採取的方案。分析 CPU 用量並瞭解定價資訊後,他們決定採用 e2-standard-4 機器。這個機器的平均處理量幾乎是原本的 4 倍,且比 e2-standard-8 機器便宜。
改用大型機器的好處之一,是執行頻率會降低。他們發現,機器長時間保持運作只為了傳輸資料。由於新機器更大,執行個體停機時間增加,負載平衡器每天會減少執行個體總數。因此,他們必須支付高級機器的費用,但同時每月使用的核心時數減少。
當成效直接影響收益,就必須仔細考慮許多方面的取捨。
應用情境 2:使用內部 IP 的 Google Cloud 網路
接下來,您將在這個範例使用 iperf 測試處理量速度。您要將一部機器設為伺服器,然後讓其他機器指向該伺服器並比較結果。
Gecko Protocol 是一間 B2B 公司,專門為遊戲和其他即時圖像系統提供專屬的輕量網路通訊協定。該公司發現後端機器的處理量低於預期,這些機器負責傳輸和轉碼大型影片與圖像檔案。
以下是他們的基準 iperf 測試結果:
------------------------------------------------------------
Client connecting to 104.155.145.79, TCP port 5001 TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.128.0.3 port 53504 connected with 104.155.145.79 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.03 GBytes 884 Mbits/sec
他們以同一網路設定再次執行同樣測試,卻發現結果與剛才完全不同:
student-00-aafd1bd9c185@instance-2:~$ iperf -c 10.128.0.2
------------------------------------------------------------
Client connecting to 10.128.0.2, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.128.0.3 port 38978 connected with 10.128.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.27 GBytes 1.95 Gbits/sec
這次測試結果為 1.95 Gbit/秒,遠高於 Gecko Protocol 在前一張圖表看到的數值。究竟是怎麼回事?
現在來重建這個情境。
- 在控制台透過 SSH 連至
instance-1,然後設定 iperf 接收端:
iperf -s
輸出內容範例:
student-00-aafd1bd9c185@instance-1:~$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
- 透過 SSH 連至
instance-2,並檢查外部 IP 位址連線:
iperf -c <external ip address of instance-1>
輸出內容範例:
student-00-aafd1bd9c185@instance-2:~$ iperf -c 35.201.145.135
------------------------------------------------------------
Client connecting to 35.201.145.135, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.40.0.8 port 58691 connected with 35.201.145.135 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.36 GBytes 1.16 Gbits/sec
與 Gecko Protocol 進一步討論後,我們發現他們平時使用「外部」IP 連至機器,但測試時使用的是「內部」IP。如果機器位於同一網路,使用內部 IP 連線可提高處理量。
- 現在檢查與內部位址的連線:
iperf -c <internal ip address of instance-1>
輸出內容範例:
student-00-aafd1bd9c185@instance-2:~$ iperf -c 10.40.0.5
------------------------------------------------------------
Client connecting to 10.40.0.5, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.40.0.8 port 42950 connected with 10.40.0.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.26 GBytes 1.94 Gbits/sec
注意這次的傳輸傳輸量和頻寬速率不太一樣。在這個例子,改用內部 IP 位址後,傳輸量增加 0.9 GB,頻寬則提升 0.78 Gbit/秒。您剛才證明了內部連線速度更快。
根據您解決 Dobermanifesto 問題時學到的知識,使用更大的機器是否能提升網路速度?instance-2 只有 1 個 vCPU。如果改用大一點的機器,連線速度會多快?如果改用大很多的機器呢?請繼續使用內部 IP 位址測試 (如果時間足夠,也能測試外部 IP 位址)。
具備 4 個 vCPU 的機器
- 透過 SSH 連至
instance-3,並使用內部 IP 位址測試連線:
iperf -c <internal ip address of instance-1>
輸出內容範例 (您的結果可能不同):
student-00-aafd1bd9c185@instance-3:~$ iperf -c 10.40.0.5
------------------------------------------------------------
Client connecting to 10.40.0.5, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.40.0.6 port 39115 connected with 10.40.0.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 4.53 GBytes 3.89 Gbits/sec
具備 4 個高 CPU 的機器
- 透過 SSH 連至
instance-5,並使用內部 IP 位址測試連線:
iperf -c <internal ip address of instance-1>
輸出內容範例:
student-00-aafd1bd9c185@instance-5:~$ iperf -c 10.40.0.5
------------------------------------------------------------
Client connecting to 10.40.0.5, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.40.0.3 port 39736 connected with 10.40.0.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 10.3 GBytes 8.84 Gbits/sec
這確實能大幅提升處理量。
看來 Gecko Protocol 也要思考最合適的核心大小。他們根據這次小型偵錯結果,將影片和圖像資料傳輸速度提升約 14 倍。對他們來說,提升幅度相當大;畢竟他們提供的網路通訊協定是建構在高效能後端服務上,專為高效能運算情境設計。
工作 3:測試自家環境
本實驗室未說明如何測試自家系統,但我們提供下列額外資訊供您參考。如要進一步瞭解如何測試自家網路,請參閱「Network Throughput Testing with iPerf」(使用 iperf 測試網路處理量) 一文。
如果有時間,隨時能自行設定 VM 來測試。建立 VM 時,請務必使用「iperftest」防火牆規則和標記。記得同時測試內部和外部 IP 位址。
自行測試網路速度所需的設定
-
前往控制台,依序點選「導覽選單」>「虛擬私有雲網路」>「防火牆」。
-
點選「建立防火牆規則」。使用下列設定建立防火牆規則:
| 欄位 |
值 |
註解 |
| 名稱 |
iperf-testing |
新規則名稱 |
| 目標 |
網路中的所有執行個體 |
|
| 來源 IP 範圍 |
0.0.0.0/0 |
我們會開放防火牆,讓網際網路任何 IP 位址的流量進入 |
| 流量方向 |
輸入 |
|
| 相符時執行的動作 |
允許 |
|
| 通訊協定和通訊埠 |
tcp:5001; udp:5001 |
|
- 點選「建立」。
點選「Check my progress」,確認目標已達成。建立防火牆規則
通常會盡可能將工作負載提升到接近 100%,但這會讓磁碟幾乎沒有空間執行重組等作業。
使用率為 90-93% 屬於正常,但當使用率達到 98%,就會出現大量爭用情形,導致效能下降。
測試時,如果發現輸入/輸出效能下降,請查看節流計數器。如果沒有節流情形,請查看 CPU 使用率,數值很高就表示有問題。
工作 4:如果時間充裕
在實驗室介面右側的「Student Resources」下方,您可以找到本實驗室的相關影片連結,歡迎觀看!

恭喜!
太棒了!在本實驗室,您學會使用開放原始碼工具測試網路連線和效能,並瞭解機器大小如何影響網路表現。
後續行動/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2026 年 7 月 7 日
實驗室上次測試日期:2026 年 7 月 7 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。