@techtipsvn
Go Blog · 14/10/2026

Code Go không đọc body chậm gần 5 lần qua HTTP/1, Go 1.27 tự sửa

Code Go không đọc body, mỗi request lại mở kết nối mới.

2026-10-1510 slide2 phút đọcGiải thích
Slide bìa: Code Go không đọc body chậm gần 5 lần qua HTTP/1, Go 1.27 tự sửaSlide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10
cuộn, vuốt, hoặc phím ←→01 / 10

Cùng một bài, đọc bằng chữ. Nhanh hơn và tìm lại được bằng Ctrl+F.

100 request HTTP/1 trên Go 1.26. Cùng code, Go 1.27: khoảng 150 ms.

Body là gì

Body là phần nội dung server trả về

http.Get trả về status và header trước. Phần nội dung phía sau gọi là body. Nó vẫn nằm trên kết nối cho tới khi code đọc.

Đoạn code chậm

Hàm này không đọc body

Kết nối mới thì tốn

Mở kết nối mới mất vài lượt đi về

Với HTTPS, máy bạn và server phải hỏi đáp vài lượt qua mạng để thiết lập bảo mật. Xong mới gửi được request. Vì vậy HTTP/1 giữ kết nối mở cho request sau.

Go 1.26 trở về trước

Vì sao kết nối bị bỏ

  1. Nối đuôiHTTP/1 gửi các response nối đuôi nhau trên cùng một kết nối
  2. Còn dưBody chưa đọc hết thì response sau bị kẹt phía sau phần dư
  3. Mở mớiGo 1.26 bỏ kết nối đó, mở kết nối mới cho request sau
Cách cũ

Đọc bỏ phần body còn lại

Go 1.27 tự đọc bỏ phần dư

Từ Go 1.27, chỉ cần Close như cũ. Go tự đọc phần body còn lại ở nền, tối đa 50 ms hoặc 256 KB, rồi dùng lại kết nối.

Code gọi HTTP trong Go

Nên

Luôn Close body, kể cả khi không đọc nó

Chạy go version, xem đã lên 1.27 chưa

Không nên

Đọc bỏ body với HTTP/2, nó không bị lỗi này

Đọc bỏ body quá lớn, mở kết nối mới còn nhanh hơn

Mở lại code gọi API của bạn

Giữ dòng Close. Đang ở Go 1.26 thì update lên 1.27, khỏi viết đoạn đọc bỏ body.

techtipstechtipsvngolangbackendlaptrinh
Đọc tiếp

Bài khác cùng chủ đề

Slide bìa: Node.js vá lỗi bảo mật mức HIGH ngày 21/10: máy bạn đang chạy bản nào?07

Node.js vá lỗi bảo mật mức HIGH ngày 21/10: máy bạn đang chạy bản nào?

Tin1′ đọc15.10
Slide bìa: Nghị định 386: từ 18 tuổi có thể được tuyển nhờ sản phẩm, không chỉ bằng cấp08

Nghị định 386: từ 18 tuổi có thể được tuyển nhờ sản phẩm, không chỉ bằng cấp

Tin2′ đọc15.10
Slide bìa: Lên OpenCode 2.0: config cũ vẫn chạy, plugin 1.0 và CLAUDE.md thì không08

Lên OpenCode 2.0: config cũ vẫn chạy, plugin 1.0 và CLAUDE.md thì không

feature1′ đọc15.10
Slide bìa: Gemini 4 Argon dẫn DeepSWE nhưng đứng cuối Terminal-bench, theo chính bảng của Google10

Gemini 4 Argon dẫn DeepSWE nhưng đứng cuối Terminal-bench, theo chính bảng của Google

Tin2′ đọc14.10

Mỗi ngày một bài mới.

Mẹo, giải thích và tin công nghệ cho sinh viên và dev mới đi làm. Một người viết, đăng đều.

Bài cũng được đăng lên TikTok, ở dạng slide.

TikTok@techtipsvn