Twitch VOD 卡頓 / 轉圈問題 — 工程師的解決方法

Ensky Lin
Ensky Lin
Apr 5, 2018 · 4 min read

最近 Twitch 只要撥放 VOD 就會開始轉轉轉,實在是非常困擾。

要解決轉轉轉問題,首先就是要先分析到底在轉幾點的,照慣例打開 F12,經過簡單的分析發現 Twitch 的 VOD 是放在 akamai 的 CDN 上,並且速度非常不穩定。

速度時快時慢,有時候速度只有 257KB/s
從影片檔的 host name 可看到是使用 akamai 的 CDN 平台
Response header 表示 server 是放在 AmazonS3

而稍微檢測一下可以發現,同一個影片載第二次的速度和第一次差非常多,推測是有進行 cache。

traceroute 一下發現這個 hostname 對應到的 ip 位址在台灣

這些證據指出一件事情:akamai 在台灣有 CDN Server,但沒載過的資料就會速度極慢(100KB/s ~ 1MB/s 不等),聽起來就像是 akamai 跟 hinet 買的頻寬不夠導致(或其他原因),因為我們使用其他國外的服務並不會這麼慢。

而這個問題聽起來沒辦法藉由 routing 解決,因為問題不在家裡 -> akamai 而是 akamai TW -> akamai US 中間的頻寬不夠導致。

那麼,如果我們經由 VPN 將流量全部往 US 丟,應該就可以直接連到美國的 akamai CDN,享受台灣 -> 美國的頻寬,不再受限於 akamai 的內部頻寬囉?

為了驗證這個假設,我決定自己架設一台 amazon EC2 的 VPN Server。

google “PPTP server ec2” 就可以根據 這篇文章 快速架設好一台 PPTP server。設定好並連上線之後我立刻發現,居然沒辦法看 twitch 了?!想了一下推測是因為我之前都在台灣的網路環境下進行 dns lookup,我的 browser 已經 cache 了 akamaized 的台灣 IP,然後 akami 可能有擋台灣的 CDN 美國 IP 連不過來之類的。

其實我只是希望讓 *.akamaized.net 都改用美國的 IP 連而已,用 VPN 讓整台都 route 過去好像有點過頭了。了解到這點之後,我改為使用 HTTP proxy,而且用 HTTP Proxy 有個好處,就是有 chrome extension(Swichy Omega) 可以直接讓符合某個 pattern 的網址都過某個 Proxy。

於是簡單架設了一個 squid proxy 在 EC2 上,並透過 swichy omega 讓 *.akamaized.net 全都過該 proxy 就完成囉!!

實測起來速度有 2MB/s 左右,比沒 cache 過的 akamai TW 快太多了,讚讚讚 :)

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade