FileDummy Logo
FileDummy
Kiểm Thử & QA Với Tệp Tin

Load Test Tải Tệp Dung Lượng Lớn Với Grafana k6 & Apache JMeter

Kiểm thử tải endpoint download tệp với hàng trăm kết nối đồng thời sử dụng k6 và JMeter. Đo lường băng thông CDN và khả năng chịu tải origin.

17 tháng 9, 202611 phút đọc1,420 lượt xem
k6jmeterload-testingperformancefile-download

Kiểm thử tải endpoint tải xuống tệp đảm bảo rằng CDN, các quy tắc edge caching và máy chủ object storage origin của bạn xử lý được các đợt tăng đột biến đồng thời mà không bị giới hạn băng thông hoặc tỷ lệ lỗi cao. Hướng dẫn này trình bày cách xây dựng load test bằng Grafana k6 và Apache JMeter.

Viết Load Test Tải Xuống Tệp Với Grafana k6

k6 là công cụ load test hiện đại, thân thiện với lập trình viên, được viết bằng Go với script kiểm thử JavaScript.

JavaScript
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '30s', target: 20 },  // Tăng dần lên 20 người dùng
    { duration: '1m', target: 50 },   // Duy trì 50 lượt tải xuống đồng thời
    { duration: '20s', target: 0 },   // Giảm dần
  ],
  thresholds: {
    http_req_duration: ['p(95)<1500'], // 95% request phải hoàn thành dưới 1,5 giây
    http_req_failed: ['rate<0.01'],    // Tỷ lệ lỗi phải dưới 1%
  },
};

export default function () {
  const url = 'https://filedummy.dev/api/download?type=pdf&size=10mb';
  const res = http.get(url, {
    responseType: 'binary',
  });

  check(res, {
    'mã trạng thái là 200': (r) => r.status === 200,
    'độ dài nội dung khớp': (r) => r.body.length === 10485760,
    'có header cache-control': (r) => r.headers['Cache-Control'] !== undefined,
  });

  sleep(1);
}
Thử Nghiệm Thực Tế.pdf

Chạy benchmark tải xuống đồng thời cao bằng file test 10MB được cache toàn cầu của chúng tôi.

Tải File Mẫu 10MB PDF Test →

Cấu Hình Apache JMeter Cho Load Test Tải Xuống

  1. Tạo Thread Group với số lượng virtual user đồng thời mong muốn (ví dụ: 100 thread, thời gian ramp-up 30 giây).
  2. Thêm sampler HTTP Request trỏ đến URL tải xuống của bạn.
  3. Đánh dấu ô Save response as MD5 hash nếu bạn không muốn JMeter lưu trữ payload nhiều gigabyte trong bộ nhớ test runner.
  4. Thêm Response Assertion kiểm tra HTTP 200 và header hợp lệ.

Các Chỉ Số Cần Theo Dõi Trong Quá Trình Test Tải Xuống Tệp

  • Throughput (MB/s): Tổng lưu lượng mạng egress từ origin hoặc CDN của bạn.
  • Time to First Byte (TTFB): Làm nổi bật liệu việc tra cứu origin hay ký presigned URL có đang tạo ra bottleneck hay không.
  • Đột biến lỗi (HTTP 429 / 503): Chỉ ra giới hạn tốc độ hoặc connection pool upstream bị bão hòa.
NDL

Nguyễn Đại Long

Tác Giả

Backend Lead • Chuyên gia Kiến trúc Hệ thống Phân tán & Lưu trữ Đám mây

Hơn 4 năm kinh nghiệm thiết kế các hệ thống xử lý tệp tải lên thông lượng lớn, tối ưu hóa cơ sở dữ liệu và hạ tầng phân tán Cloudflare R2 / AWS S3. Người sáng lập FileDummy và Mạng lưới Hệ sinh thái NDL.

Bài viết này có hữu ích không?

Bấm Thích để ủng hộ tác giả và giúp bài viết lan tỏa tới cộng đồng lập trình viên.

Thảo Luận Kỹ Thuật & Đóng Góp Ý Kiến (0)

Chia sẻ kết quả benchmark, phản hồi các trường hợp biên hoặc đặt câu hỏi chuyên môn.

0/3000

Chưa có bình luận nào. Hãy là lập trình viên đầu tiên bắt đầu cuộc thảo luận!

Câu Hỏi Thường Gặp (FAQ)

What is the difference between k6 and JMeter for load testing?▾

k6 uses JavaScript test scripts, has a modern CLI, generates no GUI overhead, and integrates well with CI/CD. JMeter is a mature Java tool with a GUI, supports more protocol types (FTP, JDBC, SOAP), and has a larger plugin ecosystem. k6 is preferred for HTTP/API load testing.

How do I measure download throughput in k6?▾

k6 automatically tracks http_req_receiving duration and data_received bytes per request. Calculate throughput as data_received / test_duration. Use k6's Trend metric type for custom throughput measurements.

How many virtual users do I need to load test a CDN?▾

CDNs handle massive concurrency. To meaningfully test, bypass the CDN and test the origin directly. Typical origin servers should handle 50–500 concurrent file download requests before saturating CPU or bandwidth.

Bài Viết Liên Quan