EMBRA

Engineering / Đo đạc

Từ Việt Nam tới Singapore, Hong Kong, Virginia: một request có database tốn bao nhiêu mạng?

Hoàng Xuân · Embra Engineering · Đo 00:17–00:25 ngày 22/10/2026 · Một máy, một nhà mạng, ngoài giờ cao điểm. Đọc giới hạn trước khi dùng số.

Từ máy đo tại Việt Nam, một vòng mạng tới Singapore mất khoảng 66 ms, gấp đôi tới TP.HCM (33 ms). Tới Virginia, region mặc định của function trên Vercel, mất 282 ms. Chênh lệch này nhỏ khi trang chỉ tải một lần. Nó lớn dần khi app và database nằm ở hai nơi, vì mỗi truy vấn chạy tuần tự trả thêm một vòng.

Trong bài này

Đo cái gì, đo thế nào

Mỗi vòng, công cụ mở một kết nối TCP rồi bắt tay TLS tới từng đích, lần lượt, rồi nghỉ 1 giây. Tổng cộng 120 vòng. Tên miền được phân giải trước khi bấm giờ. Thời gian TCP connect xấp xỉ một vòng mạng (RTT).

Đích là endpoint API hoặc object storage theo region của nhà cung cấp: Bizfly Cloud và VNG Cloud ở Hà Nội và TP.HCM, AWS ở Singapore, Hong Kong, Tokyo và Virginia. Front-end của các endpoint này nằm trong region tương ứng. Thêm vercel.com để thấy CDN của Vercel ở gần đến đâu. Không đo app thật của ai.

Công cụ là một chương trình Go ngắn, chỉ dùng thư viện chuẩn; mã nguồn chưa công bố. Cách làm đủ để tự viết lại.

Kết quả

TCP connect p50, mili giây, càng ngắn càng tốt:

ĐíchConnect p50Connect p90TLS p50Request đầu p50Thành công
Bizfly Cloud, TP.HCM33,261,895,1161119/120
VNG Cloud, TP.HCM34,155,694,3162117/120
Vercel (CDN anycast)35,462,779,8151119/120
VNG Cloud, Hà Nội49,661,571,0170118/120
Bizfly Cloud, Hà Nội57,883,681,9198117/120
AWS, Singapore66,295,379,1211116/120
AWS, Hong Kong76,8108,591,1245117/120
AWS, Tokyo134,9168,7148,3418115/120
AWS, Virginia (Mỹ)281,7314,7298,2862112/120

Đơn vị mili giây. “Request đầu” là mô hình cho một request HTTPS trên kết nối mới: connect + TLS + một vòng cho chính request, chưa tính thời gian server xử lý. TLS gồm cả phần tính toán của server đích, nên chỉ so sánh tương đối giữa các đích. Các lần không thành công đều là timeout 3 giây ở bước TLS, rải đều mọi đích, nhiều khả năng do đường mạng phía máy đo.

Ba điều đọc được từ bảng:

Khi app và database ở hai nơi

Một trang thường chạy vài truy vấn nối tiếp: đọc session, đọc user, đọc danh sách đơn. Nếu app và database cùng data center, mỗi vòng dưới 1 ms. Nếu ở hai nơi, mỗi truy vấn tuần tự cộng thêm một RTT giữa hai nơi đó.

App ở … , database ở …RTT giữa hai nơi1 truy vấn5 truy vấn10 truy vấn
Cùng data center< 1< 1< 5< 10
TP.HCM, Singapore (ước lượng)~6666331662
TP.HCM, Virginia (ước lượng)~2822821.4092.817

Đơn vị mili giây, chỉ phần mạng, cộng thêm vào thời gian mỗi request. Ước lượng từ RTT đo ở máy này, không phải số đo server-to-server; đường giữa hai data center thường ổn định hơn đường từ mạng gia đình. Connection pool giữ kết nối sẵn nên không tính bắt tay TCP/TLS ở đây.

Vì vậy câu hỏi đầu tiên không phải “region nào gần người dùng nhất”, mà là “app có nằm cùng chỗ với database không”. Vercel cũng tự khuyến nghị đặt function cùng region với database. Gộp các truy vấn tuần tự thành một (JOIN, hoặc chạy song song khi độc lập) giảm chi phí này ở mọi nơi.

CDN gần không có nghĩa là function gần

Kết nối tới vercel.com chỉ mất 35 ms, ngang TP.HCM, vì CDN của Vercel có điểm hiện diện gần. Nhưng đó là nơi kết thúc kết nối và trả nội dung tĩnh. Function vẫn chạy ở region compute; Vercel có 19 region, gần nhất là Singapore và Hong Kong, mặc định là Virginia. Trang tĩnh nhanh không chứng minh API có database cũng nhanh.

Giới hạn của phép đo

Embra sẽ đo lại vào giờ cao điểm và từ mạng di động, rồi cập nhật bài này kèm ngày sửa.

Tự đo từ mạng của bạn

Số đo từ mạng của chính người dùng có giá trị hơn mọi bảng chung. Cách đo trong bài này:

  1. Chọn đích là endpoint theo region của nhà cung cấp bạn đang cân nhắc (API hoặc object storage của region đó), không dùng tên miền có CDN phía trước.
  2. Phân giải DNS trước, rồi mới bấm giờ cho TCP connect và TLS handshake.
  3. Xen kẽ các đích trong cùng một vòng, nghỉ 1 giây giữa các vòng, chạy ít nhất 100 vòng.
  4. Báo cả p50 và p90, cùng số lần thất bại; không dùng trung bình.
  5. Chạy lại vào giờ cao điểm tối và từ mạng di động.

Muốn dùng công cụ của Embra, gửi email tới hello@embra.cloud.


Bài liên quan: so sánh nơi chạy app có Postgres cho người dùng Việt Nam và chuyển app Next.js có Postgres khỏi Vercel. Embra đang xây hosting app và PostgreSQL tại Việt Nam, hiện ở closed alpha; số đo trong bài là của các nhà cung cấp khác, không phải của hạ tầng Embra.