Azure App Service F1真的很靈

名詞解釋:

在VPS裡,一款VPS如果被稱作靈車,意思是服務很不穩,容易跑路
可以當作形容詞使用,例如: 這家很靈,意思是這家服務很不穩
相信你也猜到... 我會寫這篇,是因為 Azure App Service真的很靈
玩玩可以,生產環境建議別用。除非你選用Dedicated CPU以上的方案

前情提要

Rootless Router 終於搞定了,目前都是部屬在Azure app service裡面,F1 tier免費層
屬於Azure services that are free always類別
我的Rootless Router上線也有些時日了。正式部屬上線以後,過兩天發現了些問題

Update:

App Service SLA,微軟公司保證有 99.95% 之時間,將提供客戶訂閱中執行之 App。
在免費或共用層下之應用程式並未提供 SLA。

本文稱微軟產品不穩定,描述的就是未提供 SLA服務之自身使用經驗,不能概括微軟有提供SLA之其他產品,特此刊誤

Part: 1

首先了解免費層的限制: 

  1. CPU time: 60min/day
  2. Traffic: 165MB/day

CPU 100%運作,就是消耗全部的CPU time。
每天24小時,cpu time一小時,意味著平均CPU不能超過4%

首先,我的香港節點CPU消耗特別快。一下子就用光我的所有時數
比起其他節點,消耗速度明顯多上20%。就要開始找原因了

經過比較,我發現不同地區CPU型號不同,頻率有差異
也就是說同樣60min,算力是不同的

這些是我試過的節點,和他們的CPU型號

  • HK      Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  • JP E     Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
  • SG       Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
  • US W   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
  • US W2 Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  • US E    Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  • US E2  Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  • CA C    Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
  • CH       Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
  • UK S    Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
  • FR C    Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  • AU       Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
  • UAE N Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
  • BR S    Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
除了香港的被我留下來,用來和我自己的台灣節點peer
畢竟港台延遲只有20ms,實在太香了
但是該顆CPU算力相比其他節點不足也是事實。
所以暫不開放新peer,再多觀察一些時間
其他的我都盡量切換到Platinum CPU的地區了

剛剛發現有些節點CPU不是固定的。例如這2個節點和我一開始看到的不一樣!
想說CPU使用率怎麼突然增加了,一看發現CPU突然變爛了
所以新加坡,英國也暫時關閉新peer請求了
  • SG     Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  • UK S Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
經過我的多方優化,限制BIRD CPU使用率等等,現在HK節點使用起來額度也是綽綽有餘
現在香港節點會每天會消耗55min左右,其他節點每天消耗45min左右。相差了大約20%算力

Part 2

現在,CPU使用率相當低,不再擔心CPU過載導致容器被關機了。

但沒過多久,就遇到另一個問題了: 服務不穩

這個是我目前節點的peer數量:
https://42status.kskb.eu.org/

其中澳洲、巴西和阿聯猷是0 peer,也就是說他們的運行環境是完全一模一樣的
除了被分配到的ip以外

但只有這三個區域會這樣不穩: 巴西/英國/美西



可以看到巴西節點跑到一半突然掛掉了。與之相比,澳洲、阿聯猷都保持穩定

圖中的美西正常,是因為最初就是美西出問題,我從usw切換去usw2了
但是usw2的CPU是Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
美西節點作為熱門peer節點,不可能用這顆CPU。所以我又搬回來了

理論上完全相同的環境,不同地區卻有不同結果。
除了硬體問題,只能懷疑是外部環境的不同了

一開始看了許多地方,CPU使用率,記憶體占用比例
幾乎各處都一樣。直到我發現這個

阿聯猷節點的top

巴西節點的top
因為是相同的容器,相同的設定。所以所有數值幾乎相同。task數量,記憶體占用等

但是有一個數值差異超大,那就是load average!
巴西節點的load average有時甚至可以飆到恐怖的 6!

在我查完linux load average些資訊以後,我懷疑這個訊息和母雞有關。

===== Update =====

巴西節點的top(空負載)
幾乎可以確定load average和母雞負載有關了。
我剛剛ssh進去把所有服務關閉,只留下nginx網頁服務
不然azure偵測到你網站掛掉,會貼心地幫你重啟

可以看到CPU占用率很低,1.7us
但是load average還可以飆到9甚至11! 鄰居是在挖礦嗎?

我的CPU usage雖然很低,但是母雞負載太高了
強烈懷疑這奇怪的奇怪的503 error,還有節點會莫名其妙掛掉,和這個有關

Conclusion

Azure app service F1 plan 免費層是我見過最靈車的服務,要多靈有多靈,建議別用
真的要用,務必花錢上B1
如果還是不行...美西節點可能就要考慮搬家了。
搬去美中之類,找看看有沒有母雞負載低,又是Platinum CPU的地區吧

微軟回復了,原因是we ran out of workers。看來真的是母雞負荷太高了

美西只有加州是Platinum CPU,要嘛不給用,要碼E5 CPU
現在我先搬去華盛頓了,E5-2673,也暫時不接新peer了

經過幾天統計,微軟的無SLA產品的uptime大概80%~90%,有任何一點要求的服務,建議別用

如果你不介意很靈的peer,歡迎來和我的RootlessRouter peer!
https://github.com/KusakabeSi/RootlessRouter-UML/blob/main/README.md

如果很介意...可以和我的普通節點peer,這個就不是架在azure app service了,而是架在我家
興比之下應該不那麼靈車,歡迎來peer喔!
https://www.kskb.eu.org/2021/03/dn42-peering.html

留言