Let's Encrypt的證書業務為全世界逾2.35億的網站提供TLS證書,其業務都基於資料庫庫進行管理。如果資料庫效能對其業務至關重要,如果效能不足,則可能導致其使用者的API請求錯誤和超時。2020年末,Let's Encrypt升級了資料庫伺服器,效能得到大幅度提高。日前,Let's Encrypt披露了這次升級的細節,請隨蟲蟲一起學習一下。
資料架構Let's Encrypt基本架構是一個Golang語言開發的CA軟體Boulder。Boulder也是一個開源軟體,用來查詢來管理訂戶帳戶和整個證書頒發過程。Boulder原始碼託管在Github上(github:/letsencrypt/boulde),核心資料架構以MySQL為基礎,使用MariaDB,InnoDB引擎。
為了最小化複雜性,CA基於單資料庫執行。最小化複雜度有利於安全性,可靠性並減輕維護負擔。在任何給定時間,都有許多活動的資料庫副本,透過將一些讀取操作定向到副本資料庫伺服器,以減少主資料庫上的負載。這種設計的使得對資料庫伺服器效能要求很高,需要的硬體要求非常高。
硬體規格儘管上一代資料庫硬體已經很強(Xeon E5-2650 24核/48執行緒,1TB記憶體,24x 3.8TB三星PM883 SATA SSD ),但是已經到了瓶頸。為了在同等尺寸下2U,可以提高效能一倍以上。選型時候採取了AMD EPYC晶片的Dell PowerEdge R7525。
詳細配置對比如下:
Dell PowerEdge R7525 內部,中間一排的兩個銀色散熱片下面是CPU。大小為64GB的RAM記憶體條,分散式在兩個CPU之間共計32。24個NVMe驅動器位於機箱最左側一排。
AMD霄龍架構,可以支援64個物理CPU核心,CPU速率可以達到2.9GHz和3.4GHz(增強)。更重要的是,霄龍架構提供了128個PCIe v4.0通道,這樣可以在一臺伺服器上設定24個NVMe驅動器。NVMe的速度非常快(比SATA SSD快5.7倍)。現代消費類晶片通常只支援16個PCIe通道,英特爾的Xeon晶片,也只有48條通道。
效能測試升級後,Let's Encrypt團隊進行了,相應的基準測試。其中最重要的是請求處理的中位數(50%)開始,因為它最能反映使用者的體驗。升級之前,處理了50%的API請求約要耗費90毫秒。升級後,耗時降至約9毫秒!
CPU利用率:
舊CPU達到了極限。在升級主資料庫伺服器的前一週,CPU使用率(/proc/stat)平均超過90%:
升級後CPU使用了,只有25%,圖上都顯示不了。
IO讀寫:新資料庫伺服器從副本伺服器(只讀)升級為主要資料庫(讀/寫)。
升級後還大大減少了整體資料庫延遲。平均查詢響應時間(INFORMATION_SCHEMA)約為0.45毫秒。
現在,查詢平均速度提高了三倍,約為0.15毫秒。
總結透過升級硬體裝置, Let's Encrypt在機箱尺寸不變的情況下,透過改變為ADM霄龍架構,讓伺服器處理器,記憶體和硬碟儲存都得到2倍的提高。升級後業務處理能力獲得很大效能改善,請求耗時減少了十倍,資料查詢速度提高了三倍以上。