(上圖是資料庫連線數監控圖)
非常抱歉,今天下午 16:50-17:40 期間,一場龍捲風突襲園子,突增的併發請求狂卷部落格站點的 pod,由於風力巨大(70%左右的增量),pod 的 cpu 不堪重負,造成部落格站點無法正常訪問,由此給您帶來麻煩,請您諒解。
在沒有龍捲風的一般大風(訪問高峰)情況下,部落格站點單個 pod 的 cpu 通常消耗在 3-4 核之間,所以我們採用了下面的 pod 資源限制配置:
resources:
requests:
memory: "4Gi"
cpu: "3"
limits:
memory: "6Gi"
cpu: "5"
但今天龍捲風風力太大, 5 核 cpu 也扛不住。開始我們試圖通過增加伺服器與更多 pod 減輕單個 pod 的 cpu 壓力,但發現這樣於事無補,不僅已有 pod 的 cpu 沒有明顯下降,而且新增 pod 的 cpu 也是扛不住,可能是 k8s service 單位時間轉發給單個 pod 的併發請求需要超過 5 核以上 cpu 才能處理得過來。
這時你也許會問為什麼不直接調高 cpu 限制?我們現在使用的 k8s 叢集多數使用的是高配伺服器(至少8核),的確具備調高 cpu 限制的條件。但是修改 cpu limit 會引起所有 pod 重新部署,我們擔心在訪問高峰進行這個操作會雪上加霜,所有沒有優先採用這個方法。
加伺服器加 pod 解決不了問題,我們也只能試試調高 cpu 限制,在調高限制並 pod 完成重新部署後很快就恢復正常,但我們不能確定是調高 cpu 限制藥到病除,還是巧合,正好在調高 cpu 限制後龍捲風停了。
就這樣經歷了一次龍捲風襲擊造成的故障。抱歉,給大家帶來麻煩了。