結論先講

10 人和 5000 人需要的技術棧完全不同。 10 人什麼框架都行;50 人需要注意 DB 連線池;100 人 bcrypt 開始成為瓶頸;500 人需要 Redis cache;1000 人需要水平擴展;5000 人每一層都要專門設計。不要為了 10 人的產品去設計 5000 人的架構。

這一步怎麼來的:五層都測完了,每一層都有自己的數字。但讀者(包括我們自己)想要的是「我有 N 個用戶,每一層該選什麼」的一張表。這篇就是那張表。


容量規劃表

這張表是從平台 42 項壓測數據整合出來的。每一格的建議都有數據支撐,不是猜的。

10 人同時在線

建議理由
F2E任何框架,分數都 95+F2E 篇:差距只有 6 分
B2E任何框架,30-80 req/sCRUD 篇:10 VU 全部健康
DBPG 或 MySQL,ORM 直接用DB 篇:低壓下差距不大
Storage不需要額外儲存DB 就夠了
Infra直連就好不需要反向代理

這個階段的建議:用你最熟的技術,不要過度設計。

50 人同時在線

建議理由
F2E任何框架,注意打包大小Svelte 326KB vs Angular 784KB
B2EExpress-TS 約 120 req/s 足夠Queue 非同步化幾乎零額外延遲
DBPG 略優,確認連線池 ≥ 10連線池篇:pool=5 低壓夠用但要留餘量
Storage讀多的話考慮 Redis cache+25% on CRUD
Infra建議加 nginx(開 keepalive)免費午餐篇:+7%

100 人同時在線

建議理由
F2EReact/Vue 為主,做 code splittingBundle size 開始影響體驗
B2EExpress-TS + PM2 2 workersbcrypt 開始成為瓶頸。批次上傳 Go/Express 可達 480+ RPS
DBPG 推薦,加正確的 IndexBulk 篇:正確 Index 快 3-5 倍
Storage加 Redis 做讀取快取+25%(CRUD)到 +550%(讀多)
Infranginx + keepalive 必備考慮開 rate limiting

這是第一個轉折點——bcrypt 瓶頸出現。 回顧 Bcrypt 篇:在 2 核 CPU 上,bcrypt rounds=10 的理論上限只有 ~25 RPS。100 人同時做 Auth 就會打到天花板。

500 人同時在線

建議理由
F2E靜態資源上 CDN不要讓後端伺服器處理靜態檔案
B2EGo 或 Express-TS PM2 ×4P95 到 2-6s。WS/SSE 每連線約 50KB 記憶體
DBPG 連線池調到 20-50連線池篇:pool=50 高壓下 +70%
StorageRedis cache 必備讀多場景 +6.5 倍 = 從不夠用變夠用
InfraPM2 cluster ×4 workers免費午餐篇:+93%

500 人是大部分中型應用的目標。做完免費午餐三件套就能撐住。

1,000 人同時在線

建議理由
F2ESSR 考慮伺服器端渲染降低首屏時間
B2EGo 推薦Queue 9.5K RPS 全程零錯誤。Django/Laravel 需降 bcrypt rounds
DBPG 連線池 50,監控慢查詢開始出現 timeout 錯誤(15%)
StorageRedis + 非同步佇列寫入量大要用 Kafka 做事件緩衝
Infra水平擴展 2+ 台擴展篇:2 台 +53%。同時擴 DB 連線池!

1,000 人是第二個轉折點——單機不夠了。 但水平擴展前一定要先把單機優化做完(免費午餐),不然加機器也是浪費。

5,000+ 人同時在線

建議理由
F2ECDN + 邊緣快取,考慮 SSG減少 server roundtrip
B2EGo + 水平擴展WS 需 sticky session 或 Redis Pub/Sub 跨節點
DB讀寫分離,PG 需要積極的 VACUUMmax_connections 要算清楚
Storage全套:Redis + ES + Kafka各儲存做好監控
Infra完整架構nginx 叢集 + 自動擴展 + 健康檢查 + graceful shutdown

跨層洞察:5 條核心結論

從 42 項壓測中提煉出的跨層結論:

1. 硬體決定天花板

所有框架都在 2 CPU / 2 GB 下測試。Django 在 2 CPU 上 50 人就 break——不是 bug,是 gunicorn + bcrypt 的 CPU 密集架構在資源受限時的表現。給 4 CPU 就能撐 200 人。

不要看到「Django 50 人就掛了」就否定 Django。 先看你給它多少資源。

2. bcrypt 是共同 CPU 瓶頸

9 個後端框架的共同天花板。Go 用 goroutine 處理最高效,Node.js 用 native addon 也不差,Python 受影響最大。

遇到 bcrypt 瓶頸應該降低加密強度或加 Redis cache,不是換框架。(回顧 Bcrypt 篇

3. 水平擴展必須同時擴 DB 連線

2 台提升 53%,4 台不更好。瓶頸轉移到 DB。每台 pool=5,4 台就是 20 個連線,不能超過 max_connections。

擴機器之前先算連線數。(回顧 連線池篇擴展篇

4. 免費午餐比換框架效果大

Redis cache +6.5 倍、nginx keepalive +7%、multi-worker +93%。三件事加起來比從 Django 換成 Go 的效果還大。

先優化架構,再考慮換框架。(回顧 免費午餐篇

5. 選框架先問三個問題

  1. 團隊會什麼語言?
  2. 硬體預算多少 CPU?
  3. 需要什麼生態(Python ML / Java 企業 / JS 全端)?

效能排名只是參考。


這個系列到這裡的進度

到目前為止我們走過了:

Part主題篇數核心結論
1方法論5 篇怎麼做壓測
2Bcrypt3 篇所有框架的共同天花板
3CRUD6 篇Go 最快但都卡在 bcrypt
4F2E2 篇差距 6 分,看生態不看分數
5DB3 篇PG 通用、MySQL 寫入、Bulk 26 倍
6Storage1 篇PG + Redis 夠用
7Infra2 篇免費午餐 > 換框架
8跨層本篇容量規劃表

接下來回到 B2E——混合場景、WS/SSE、Queue、Redis On/Off、Cold Start 的新數據,還有你的微服務實戰經驗。


下一篇

混合場景壓測:Spring Boot 從倒數第二變第一名 — 容量規劃表畫好了,接下來回到 B2E 看更多場景的壓測數據。混合場景把 Auth 從 40% 降到 10%,排名立刻大翻盤。


本系列文章

完整 68 篇目錄見 系列首頁

← 上一篇:水平擴展的天花板:2 台 +53%,4 台卡 DB → 下一篇:混合場景壓測:Spring Boot 從倒數第二變第一名