Chúng tôi thực hiện một bài kiểm tra quy mô lớn: gửi 1 tỷ request đến 5 web framework thông dụng để kiểm chứng khả năng xử lý tải nặng của từng nền tảng.
.png)
Thử nghiệm này không đơn thuần là benchmark theo kiểu đo số liệu khô khan. Mọi thứ được thiết lập như môi trường production thực thụ: đầy đủ giám sát (observability), kiểm tra hiệu suất bằng wrk2 và k6, đồng thời tăng dần tải để đánh giá framework trong tình huống thực tế khi hệ thống chịu áp lực lớn.
Mặc dù các con số như RPS hay mức sử dụng bộ nhớ giúp đánh giá hiệu năng, nhưng chúng không đủ để kết luận nên dùng framework nào. Hệ sinh thái, cộng đồng, tốc độ phát triển, khả năng bảo trì và mức độ phù hợp với đội ngũ kỹ thuật cũng là yếu tố quan trọng không kém.
Vì vậy, kết quả dưới đây chỉ nên xem là nguồn tham khảo, không phải tiêu chí duy nhất trong việc lựa chọn công nghệ.
1. Các Framework được đưa vào thử nghiệm
5 framework được lựa chọn đều đang rất phổ biến và đã được sử dụng rộng rãi trong các hệ thống sản xuất năm 2025:
Mỗi framework đều được kiểm tra với một endpoint REST đơn giản bao gồm: phân tích JSON, truy cập CSDL PostgreSQL và trả về JSON phản hồi.
2. Kịch bản kiểm thử
Hạ tầng sử dụng:
Các chỉ số được ghi nhận:
3. Kết quả chi tiết từng framework
3.1 Go (Gin)
Gin vận hành ổn định, đạt hơn 100.000 RPS với độ trễ luôn dưới 10ms. Bộ thu gom rác (GC) hoạt động mượt mà, không làm tăng độ trễ rõ rệt. RAM sử dụng chỉ khoảng 190MB.
3.2 Rust (Actix-Web)
Actix vượt trội nhất về mặt tốc độ. Ở mức 99th percentile, framework này có độ trễ thấp nhất trong tất cả. Tuy nhiên, việc triển khai đòi hỏi nhiều cấu hình và viết code tương đối phức tạp.
3.3 Node.js (Fastify)
Fastify cho throughput khá tốt (~60.000 RPS), làm việc hiệu quả với async task. Nhưng lượng RAM sử dụng cao (khoảng 650MB) và GC đôi khi tạo ra các spike latency nhẹ.
3.4 Python (FastAPI)
FastAPI hoạt động ổn định ở tải thấp. Tuy nhiên, khi lên trên 10.000 requests đồng thời, CPU đạt giới hạn, RAM vượt 1.2GB, latency tăng mạnh.
3.5 Java (Spring Boot)
Spring Boot cho hiệu suất ổn định, nhưng tiêu tốn tài nguyên. Idle đã dùng hơn 1GB RAM, cần tối ưu kỹ JVM. Sau khi cấu hình phù hợp, hệ thống vẫn giữ được 40.000 RPS mà không gặp lỗi.
4. Tổng hợp kết quả Benchmark
Framework |
RPS (95% thành công) |
Peak Memory (RSS) |
Độ trễ 99th Percentile |
Go (Gin) |
105.000 |
190MB |
10ms |
Rust (Actix) |
110.000 |
250MB |
7ms |
Node.js (Fastify) |
60.000 |
650MB |
35ms |
Java (Spring Boot) |
40.000 |
1.4GB |
50ms |
Python (FastAPI) |
8.000 |
1.2GB |
150ms |
5. Kết luận
Kết quả trên cho thấy rằng:
Dù benchmark là thông tin quan trọng, đừng quên rằng chọn framework vẫn cần cân nhắc đến đội ngũ, mục tiêu dự án và mức độ bảo trì lâu dài.