
Mục lục bài viết 9 phần
Multipart upload cải thiện song song và khả năng tiếp tục, nhưng cũng tạo orphaned parts, duplicate retry và chi phí ẩn nếu client xử lý lỗi không đúng. Benchmark phải xác minh dữ liệu cuối cùng bằng checksum và object metadata, không chỉ thấy API trả success.
Bài viết giúp bạn
- Bài toán cần kiểm chứng
- Topology và điều kiện đo
- Biến số phải kiểm soát
Bài toán cần kiểm chứng
#Object lớn được chia thành nhiều part, upload độc lập rồi complete thành object. Lợi ích phụ thuộc part size, concurrency, RTT, bandwidth và client CPU. Khi mạng lỗi, retry một part khác retry toàn object; nhưng client sai có thể complete thiếu, giữ part mồ côi hoặc nhân băng thông.
Mục tiêu gồm performance, integrity, resumability, idempotency, cleanup và cost. Consistency/listing semantics phải kiểm tra theo dịch vụ/phiên bản, không suy rộng giữa các cloud.
Topology và điều kiện đo
#Đặt load agent ở cùng region, khác region, on-prem qua Internet/VPN/direct connect nếu có. Ghi path qua proxy, firewall, NAT và endpoint public/private. Thu client metric, network RTT/loss, gateway counter, storage request log và billing tag.
Dataset cần object nhỏ/vừa/lớn, compressible/incompressible và checksum đã biết. Calibration disk, CPU, NIC và ephemeral port của agent trước khi đo.

Biến số phải kiểm soát
#Khóa SDK/version, API endpoint, region, authentication, encryption, part size, concurrency, connection pool, retry/backoff/jitter, checksum algorithm và timeout. Ghi storage class, versioning, lifecycle và acceleration nếu bật.
Traffic profile tách steady upload, burst, mixed PUT/GET/LIST, nhiều object nhỏ và object rất lớn. Cùng tổng byte nhưng request rate/cost khác xa.
KPI và bằng chứng
#KPI gồm goodput, API latency p95/p99, time-to-complete, request/part success, retry count, bytes retransmitted, orphaned parts, checksum mismatch, recovery time và cost/GB/object. HTTP 200 ở CompleteMultipartUpload cần được đối chiếu object size, metadata và checksum.
- Kịch bản: baseline cùng region · KPI chính: goodput, latency · Bằng chứng: SDK log + network · Fail điển hình: client bottleneck
- Kịch bản: WAN loss/latency · KPI chính: retry, completion · Bằng chứng: part timeline · Fail điển hình: retry storm
- Kịch bản: client restart · KPI chính: resume time · Bằng chứng: upload ID/list parts · Fail điển hình: tải lại toàn bộ
- Kịch bản: auth hết hạn · KPI chính: fail/recover · Bằng chứng: identity/audit log · Fail điển hình: loop retry
- Kịch bản: abort · KPI chính: orphan count · Bằng chứng: list multipart/lifecycle · Fail điển hình: part tồn tại
- Kịch bản: checksum · KPI chính: integrity · Bằng chứng: source/destination hash · Fail điển hình: success nhưng sai dữ liệu
Ma trận workload và failure
#Kết hợp object size, part size, concurrency, RTT/loss và encryption. Tăng một biến mỗi phase để tìm knee point; đừng bật acceleration/cache cùng lúc rồi không biết nguyên nhân.
Fault injection gồm packet loss/latency có kiểm soát, reset connection, client restart, token expiry, service throttling và gateway failover. Stop condition bảo vệ chi phí và tránh tạo traffic ngoài phạm vi được phép.
Test plan từng bước
#- Ghi SDK, endpoint, region, policy và dataset checksum.
- Calibration agent/disk/NIC bằng local test.
- Single-part baseline cho object nhỏ.
- Multipart với nhiều part size/concurrency theo ma trận.
- Thêm latency/loss theo bậc; đo retry amplification.
- Restart client và resume bằng upload ID.
- Thử auth expiry/throttle, xác minh backoff.
- Abort, kiểm tra orphan cleanup/lifecycle.
- Download mẫu, đối chiếu checksum và metadata.
- Tổng hợp performance cùng request/egress cost.
Checklist vận hành
#- Dataset có checksum nguồn và kích thước đã biết.
- SDK/retry policy được pin phiên bản.
- Agent không chạm CPU/disk/NIC/port limit.
- Có lifecycle/abort cho incomplete upload.
- Retry dùng exponential backoff và jitter.
- Log không chứa secret/pre-signed URL.
- Theo dõi cost và đặt budget/stop condition.
- Xác minh restore/download chứ không chỉ upload.

Giới hạn của kết luận
#Kết quả phụ thuộc cloud, region, SDK, endpoint, path, encryption, object size và thời điểm đo. Không lấy throughput một agent làm capacity của dịch vụ. Quota/throttling có thể động và khác account.
ETag không luôn đồng nghĩa MD5, đặc biệt với multipart/encryption; dùng checksum semantics được dịch vụ hỗ trợ. Báo cáo cần ghi rõ thuật toán và phương pháp reconcile.
Khái niệm cần nhớ
#- Multipart upload: Chia object thành nhiều phần tải độc lập rồi complete.
- Part size: Kích thước mỗi phần, ảnh hưởng concurrency/overhead.
- Goodput: Byte ứng dụng hữu ích hoàn tất trên đơn vị thời gian.
- Orphaned part: Part còn lưu khi upload chưa complete/abort.
- Backoff/jitter: Giãn và phân tán retry để tránh đồng bộ tải.
- Checksum: Giá trị kiểm tra integrity theo thuật toán xác định.
Khái niệm cần nhớ
- DUT / SUT
- Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
- Steady state
- Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
- Pass / fail
- Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo4 nguồn +
Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.
NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.
