跳至主要內容
SUE NEWS
科技 產業分析

單核2.3萬QPS對上8.5MB記憶體:一份後端框架跑分整理,攤開的是每秒請求的單價帳

掘金一篇基準測試整理五種語言後端框架在單核真實負載下的QPS、記憶體與P99穩定性表現,本文從運算成本結構拆解選型帳。

刊登 閱讀約 5 分鐘

2026年10月7日,掘金作者「狼爺」發布一篇後端框架基準整理,涵蓋Rust、Go、Java、Python、PHP等主流語言的19個框架,資料來源包括TechEmpower、Sharkbench以及40餘份獨立基準報告。文章的核心主張很直接:技術選型時只看冷啟動速度與空閒記憶體,會嚴重誤判,真正決定伺服器帳單的是預熱完成後、真實負載下的吞吐、尾延遲與記憶體開銷。

這組數據值得從成本結構角度重算一次。

測試條件與量測基準

測試環境為Ryzen 7 7800X3D,Docker容器限制單一CPU核心,場景是JSON序列化加IO,服務充分預熱。作者另定義一個穩定性指標:中位數延遲除以P99延遲,數值越高代表長尾抖動越小。

作者同時提醒,基準測試是受控環境的參考,生產環境多數業務受資料庫IO約束,語言間差距會被大幅抹平。這個前提限制了數據的外推範圍。

穩態數據:吞吐與記憶體是兩本帳

單核QPS排行前段:Java Vert.x(Temurin)以23,116 QPS居首,Bun.serve為22,303,Rust Actix為21,965,Rust Axum為21,030,Java Vert.x(Semeru)為19,917,C# ASP.NET Core為14,707。

但把記憶體開銷放進同一張表,排序的意義就變了。Vert.x(Temurin)佔484MB,是Rust Axum(8.5MB)的約57倍;作者以Rust Axum為基準計為29倍差距的說法,是以8.5MB換算後的量級對照。Spring MVC(Temurin)落在1,105 QPS、597MB,同一語言生態內,Vert.x與Spring MVC的吞吐差距達10至20倍。

後段梯隊:Python FastAPI為1,185 QPS、Flask為1,092、Django為950;PHP Symfony 6.4為941,Laravel 11僅299 QPS且中位延遲101.7ms。以Laravel 11對比Vert.x,單核吞吐差距接近77倍;若以同等QPS需求換算伺服器數量,這就是選型直接寫進資本支出與雲端帳單的變數。

Go的表現是另一個容易被誤讀的欄位。Gin單核僅3,546 QPS、FastHTTP為5,567,作者解釋goroutine的優勢在多核橫向擴展,8核環境下效能可提升3至6倍,單核本來就不是它的比較基準。

穩定性欄位:P99才是長尾成本

中位數延遲之外,P99尾延遲決定使用者體驗與超時重試成本。Bun.serve吞吐排第二,但穩定性僅10.4%,意味著P99延遲接近中位數的10倍,平均快、長尾抖動劇烈。Elixir Phoenix(Bandit)以84.9%的全場最高穩定性形成對照,吞吐中等(4,375 QPS),但BEAM虛擬機的搶佔式調度讓延遲波動極小,適合對抖動零容忍的長連線場景。

Rust Axum穩定性72.0%、Actix為66.6%,Node.js兩個框架約63至65%,屬中段。Go兩個框架穩定性都低於2%,這在受控單核測試中反映的是長尾控制弱,多核場景下是否翻轉,來源未提供數據。

影響推演:誰受惠、誰承壓

這份整理的結論鏈可以這樣拆。受惠端:Rust生態在記憶體效率與吞吐兼得的組合上位置最好,Axum以8.5MB記憶體拿下2.1萬QPS,資源單價最低;Erlang/Elixir在長尾穩定性的利基上受惠。承壓端:PHP Laravel與Python Django在單核吞吐欄位明顯落後,但前提是業務確實是CPU約束的序列化場景,若是資料庫瓶頸型業務,這個劣勢會被抹平,作者自己也明確標註了這點。

同語言內的框架選擇,影響幅度大於語言之間的選擇。Vert.x與Spring MVC、Fastify與Express(約1.6倍差距)都印證這點。這對企業的意義是:換框架的遷移成本遠低於換語言,而報酬可能更高。微軟先前將Copilot運行時從TypeScript移植到Rust並取得15.9倍吞吐的案例,也是同一條成本邏輯的放大版,與我們先前分析的Copilot移植Rust的單價帳可互相對照。

收束判斷

這篇整理的價值不在宣告哪個框架勝出,而在把選型指標從「冷啟動與空閒記憶體」搬到「穩態QPS、P99、記憶體」三欄同時記帳。單核數據對Serverless與邊緣場景參考性較高;傳統多核部署需等比例重估。至於JVM預熱後能否追上Rust與Go,來源正文在該段落被截斷,冷JVM與預熱JVM的對比數據無法核實,此處保留未知,不做推論。