那個讓我臉疼的時刻:Black Friday當天50K RPS,CPU 15%,內存平穩,p95正常。我對著會議室說"這架構能撐一年"——兩年后爬到5M RPS時,這句話成了內部梗。
50K時調參數,5M時重新談判物理規則。每納秒都是角色,思維從"請求"變成緩存行、隊列深度、PCIe通道。內核禮貌微笑,順手偷走你的周期。
![]()
好圖表≠好架構
中等負載下,沒壓到故障模式的系統看起來都很干凈。隱藏成本——內存拷貝、上下文切換、冷緩存行——都在,只是聲音不夠大。直到它們尖叫。
基準測試偏愛快樂路徑。百萬級生產環境是錯位的MTU、突發客戶端、意外TLS重協商的集合。某處固件有個怪癖,你的完美假設就會崩塌。
SSL的30%吞吐量稅
5M RPS時,30%意味著150萬請求/秒花在無法討價還價的數學上。沒法用"氛圍"優化指數運算。選擇只有三個:卸載、會話恢復,或對加密位置 ruthless。
握手風暴會在最糟糕的日子找到你。
部分故障下的尾延遲懸崖
后端抖動時,樸素算法把重試變成驚群效應。10萬時你能注意到,500萬時直接點燃。我們學會隔離、阻尼,把"重試"當上了膛的槍對待。
三次推倒重來
第一次:內核網絡,經典配置
HAProxy風格,nbproc 4,輪詢均衡。夠用——直到上下文切換和內核鎖成為主角。
第二次:用戶態網絡,DPDK路徑
繞過內核,輪詢模式驅動,零拷貝。吞吐量上去了,但NUMA感知缺失和內存池碎片在新尺度下暴露。
第三次:完全重設計
無共享架構,每個核心獨立運行。連接親和性綁定到特定CPU,消除跨核緩存同步。TLS終止前置到專用集群,會話票證緩存跨實例共享。
關鍵認知:5M RPS時,"更多機器"是第一個謊言。網絡帶寬、PCIe總線、內存通道成為硬邊界。橫向擴展之前,先榨干縱向的每個字節。
時間去了哪里
第一次重寫以為問題在網絡棧。第二次以為在內存分配。第三次才看清:真正的戰場是數據局部性和故障隔離的交叉點。
每個請求的路徑必須可預測。任何跨核、跨NUMA、跨機架的跳轉都是待支付的利息。故障時,系統行為必須 graceful degradation 而非 cascading retry。
監控也從"看圖表"變成"讀火焰圖和PMC計數器"。p99不夠,看p99.9和p99.99的抖動模式。異常值不是噪聲,是早期信號。
給正在爬坡的人
如果你還在50K RPS,別慶祝太早。現在的平滑曲線是債務,不是資產。趁聲音還小,用火焰圖找到那些"現在不重要"的拷貝和切換。
負載均衡器的終極形態不是分發請求,而是在物理約束和故障概率之間做最優談判。5M RPS教會我:規模是透鏡,把每個隱藏假設燒到可見。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.