Hướng dẫn kiểm thử tải website bằng k6 từ A đến Z · VibeVPS
Cách kiểm thử tải website bằng k6 trước khi ra mắt
Tìm hiểu k6 là gì và thực hành tạo bài kiểm thử tải website từ đầu. Bạn sẽ biết cách chạy kịch bản, đọc các chỉ số cơ bản và phát hiện sớm điểm nghẽn trước khi website hoạt động.
Tìm hiểu .htaccess là gì, tệp này hoạt động ra sao và cách dùng htaccess để chuyển hướng URL, tùy chỉnh trang lỗi, hạn chế liệt kê thư mục và quản lý website an toàn hơn trên hosting.
#.htaccess
#hosting
#quản trị website
VVibeVPS
Sẵn sàng triển khai?
Đưa website của bạn lên Cloud VPS ngay hôm nay
Khởi tạo tự động ngay sau khi thanh toán, chuyển khoản bằng mã QR, bật tắt và cài lại máy chủ trong trang quản lý.
Trước khi đưa website vào hoạt động, bạn nên kiểm tra khả năng xử lý khi có nhiều người truy cập cùng lúc. Nếu chỉ thử mở trang bằng trình duyệt, bạn khó biết máy chủ phản hồi ra sao khi tải tăng, hay một chức năng quan trọng có bị chậm khi nhiều yêu cầu được gửi đồng thời hay không.
Trong bài viết này, bạn sẽ tìm hiểu k6 là gì, cách tạo kịch bản kiểm thử tải website và cách đọc kết quả cơ bản. Các ví dụ phù hợp để bắt đầu trên môi trường thử nghiệm hoặc website do bạn quản lý. Hãy tránh gửi tải lớn tới hệ thống của người khác khi chưa được cho phép.
k6 là gì và vì sao nên dùng để kiểm thử tải?
Kỹ sư chuẩn bị kiểm thử tải website bằng k6
k6 là công cụ kiểm thử hiệu năng có thể chạy bằng dòng lệnh. Kịch bản kiểm thử được viết bằng JavaScript, mô tả cách người dùng gửi yêu cầu đến website hoặc API. Bạn có thể thiết lập số lượng người dùng ảo, thời gian chạy, các bước truy cập và điều kiện để đánh giá kết quả.
Kiểm thử tải website giúp trả lời những câu hỏi thực tế: trang có phản hồi ổn định khi lượng truy cập tăng không, API nào bắt đầu chậm, tỷ lệ lỗi có tăng lên hay không? Đây không phải cách dự đoán chính xác mọi tình huống thực tế. Kết quả còn phụ thuộc vào môi trường kiểm thử, dữ liệu, cấu hình máy chủ, mạng và cách ứng dụng hoạt động.
Một điểm hữu ích của k6 là kịch bản có thể được lưu cùng mã nguồn, chỉnh sửa và chạy lại sau mỗi lần thay đổi. Nhờ đó, nhóm phát triển có thể so sánh kết quả trước và sau khi tối ưu, thay vì chỉ dựa vào cảm nhận.
Chuẩn bị trước khi kiểm thử tải website
Trước hết, xác định mục tiêu kiểm thử. Bạn muốn kiểm tra trang chủ, trang đăng nhập, chức năng tìm kiếm hay API tạo đơn hàng? Hãy chọn một luồng quan trọng và bắt đầu với phạm vi nhỏ. Kiểm thử một trang tĩnh thường không phản ánh đầy đủ tải của chức năng có truy vấn cơ sở dữ liệu hoặc xử lý nghiệp vụ.
Tiếp theo, chuẩn bị môi trường và dữ liệu phù hợp:
Ưu tiên môi trường staging có cấu hình gần với môi trường dự kiến vận hành.
Nếu kiểm thử trên website thật, cần có quyền thực hiện và giới hạn tải ở mức an toàn.
Dùng dữ liệu thử, tránh tạo đơn hàng, gửi email hoặc kích hoạt tác vụ thật ngoài ý muốn.
Ghi lại cấu hình máy chủ, ứng dụng và cơ sở dữ liệu để đối chiếu khi kết quả bất thường.
Theo dõi tài nguyên máy chủ như CPU, RAM, kết nối mạng và trạng thái cơ sở dữ liệu trong lúc chạy.
Cũng cần xác định trước tiêu chí đạt. Chẳng hạn, đội ngũ có thể đặt ngưỡng thời gian phản hồi và tỷ lệ yêu cầu lỗi phù hợp với yêu cầu của dự án. Ngưỡng trong ví dụ dưới đây chỉ mang tính minh họa; hãy điều chỉnh theo trải nghiệm mong muốn và đặc điểm ứng dụng của bạn.
Hướng dẫn dùng k6: tạo kịch bản đầu tiên
Tạo kịch bản kiểm thử website bằng JavaScript
Cài k6 trên máy dùng để kiểm thử theo hướng dẫn tương ứng với hệ điều hành của bạn. Sau đó, tạo tệp load-test.js với nội dung sau. Thay địa chỉ minh họa bằng đường dẫn tới website hoặc endpoint do bạn quản lý:
Trong ví dụ, stages mô tả các giai đoạn tăng, giữ và giảm tải. k6 tăng dần tới 5 người dùng ảo, giữ mức đó rồi giảm về 0. Đây là mức nhỏ để làm quen, không phải con số phù hợp cho mọi website. Hàm default là hành vi được lặp lại bởi mỗi người dùng ảo; ở đây, mỗi lượt gửi yêu cầu GET, kiểm tra mã trạng thái và nghỉ một giây.
Phần thresholds đặt điều kiện đánh giá. http_req_failed giới hạn tỷ lệ yêu cầu lỗi dưới 1%, còn p(95)<800 yêu cầu 95% thời gian phản hồi thấp hơn 800 mili giây. Đây chỉ là ngưỡng mẫu. Hãy chọn tiêu chí dựa trên mục tiêu dịch vụ, thay vì xem các giá trị này như chuẩn chung.
Chạy bài kiểm thử và tăng tải có kiểm soát
Mở terminal tại thư mục chứa tệp rồi chạy:
k6 run load-test.js
Để tránh tạo tải đột ngột, hãy bắt đầu bằng số người dùng ảo thấp và thời lượng ngắn. Quan sát website, log ứng dụng và tài nguyên máy chủ. Nếu hệ thống vẫn ổn định, bạn có thể tăng dần target hoặc thời lượng giữ tải trong stages, sau đó chạy lại để so sánh.
Không nên chỉ tăng số người dùng ảo thật nhanh rồi kết luận website không chịu nổi tải. Cách tăng tải đó có thể gây áp lực đột ngột, đồng thời làm khó xác định mức tải bắt đầu xuất hiện vấn đề. Thay vào đó, tăng theo từng bước, ghi lại thời điểm có dấu hiệu chậm hoặc lỗi và thử lại với cùng kịch bản khi cần xác minh.
Với website có nhiều chức năng, hãy mở rộng kịch bản từng phần. Bạn có thể thêm yêu cầu tới một endpoint khác, kiểm tra nội dung phản hồi hoặc mô phỏng một luồng thao tác. Tránh đưa quá nhiều hành vi vào lần chạy đầu tiên: một kịch bản đơn giản giúp khoanh vùng nguyên nhân tốt hơn nếu có sự cố.
Cách đọc kết quả cơ bản từ k6
Theo dõi biểu đồ thời gian phản hồi và tải máy chủ
Sau khi chạy, k6 hiển thị các chỉ số tóm tắt. Một số mục thường cần chú ý gồm:
http_req_duration: thời gian xử lý yêu cầu HTTP. Các giá trị phân vị như p(95) cho biết 95% yêu cầu hoàn thành trong khoảng thời gian tương ứng hoặc thấp hơn.
http_req_failed: tỷ lệ yêu cầu thất bại. Đối chiếu chỉ số này với mã trạng thái và log để hiểu loại lỗi.
http_reqs: tổng số yêu cầu được gửi. Đây là lượng yêu cầu, không đồng nghĩa trực tiếp với số khách truy cập duy nhất.
checks: kết quả của các điều kiện kiểm tra như trạng thái phản hồi có phải 200 hay không.
vus: số người dùng ảo đang hoạt động trong kịch bản tại thời điểm chạy.
Nếu thời gian phản hồi tăng dần khi tải tăng, đó là dấu hiệu cần điều tra, nhưng chưa đủ để kết luận nguyên nhân nằm ở máy chủ. Nếu tỷ lệ lỗi tăng, hãy xem log ứng dụng, mã trạng thái HTTP, giới hạn kết nối, truy vấn cơ sở dữ liệu và tài nguyên hệ thống. Nếu một ngưỡng bị vi phạm, k6 có thể đánh dấu bài chạy không đạt theo điều kiện bạn đã cấu hình.
Hãy lưu lại kết quả của từng lần chạy cùng với cấu hình tương ứng. Khi so sánh, giữ nguyên kịch bản và môi trường nếu có thể. Nếu bạn vừa đổi mã ứng dụng, cấu hình máy chủ và số lượng người dùng trong cùng một lần thử, sẽ khó xác định yếu tố nào làm kết quả thay đổi.
Phát hiện sớm điểm nghẽn và xử lý đúng hướng
Khi thấy website chậm hoặc phát sinh lỗi, hãy tìm mối liên hệ giữa chỉ số của k6 và dữ liệu quan sát trên máy chủ. CPU thường xuyên ở mức cao có thể gợi ý cần kiểm tra tác vụ xử lý nặng; thời gian chờ cơ sở dữ liệu tăng có thể liên quan đến truy vấn hoặc giới hạn kết nối. Đây là các hướng điều tra, không phải kết luận tự động từ một chỉ số đơn lẻ.
Một số bước xử lý thực tế:
Xác định endpoint hoặc bước trong kịch bản có thời gian phản hồi xấu nhất.
Đối chiếu thời điểm đó với log ứng dụng, mức sử dụng CPU, RAM, mạng và hoạt động của cơ sở dữ liệu.
Kiểm tra mã trạng thái, truy vấn chậm, tác vụ đồng bộ hoặc dịch vụ bên ngoài mà website đang gọi.
Thay đổi một yếu tố mỗi lần, chẳng hạn tối ưu một truy vấn hoặc điều chỉnh cấu hình, rồi chạy lại cùng bài kiểm thử.
Ghi nhận ngưỡng tải và điều kiện khiến vấn đề xuất hiện để đội ngũ có thể theo dõi sau này.
Nếu công cụ kiểm thử và website chạy trên cùng một máy, tải do k6 tạo ra có thể cạnh tranh tài nguyên với website. Khi cần đánh giá sát hơn, hãy tách máy chạy kiểm thử khỏi máy chủ đích và theo dõi cả hai phía. Đồng thời, kiểm tra đường truyền và giới hạn của môi trường thử để tránh nhầm vấn đề của công cụ hoặc mạng với vấn đề của website.
Lưu ý an toàn trước khi đưa website vào hoạt động
Kiểm thử tải là hoạt động có thể ảnh hưởng đến dịch vụ. Hãy chỉ kiểm tra hệ thống bạn sở hữu hoặc được ủy quyền, thông báo cho các bên liên quan và chuẩn bị cách dừng bài chạy. Tránh chạy tải cao vào thời điểm có người dùng thật đang truy cập, đặc biệt khi kịch bản có thể ghi dữ liệu hoặc kích hoạt dịch vụ bên ngoài.
Sau khi kiểm tra, hãy thử lại những luồng quan trọng bằng trình duyệt và kiểm tra log để phát hiện lỗi còn sót. Một bài kiểm thử GET trang chủ không chứng minh toàn bộ website hoạt động ổn định. Bạn nên kiểm tra riêng các chức năng quan trọng, đặt giới hạn hợp lý và lặp lại bài kiểm thử sau những thay đổi lớn về mã nguồn hoặc hạ tầng.
Nếu website cần thêm tài nguyên để thử nghiệm hoặc vận hành, VibeVPS có các gói Cloud Hosting và VPS. Bạn có thể tham khảo VPS AMD EPYC Gen 3 từ 81.000đ/tháng, sau đó lựa chọn cấu hình phù hợp với nhu cầu thực tế; mức tải cần thiết nên được xác định qua kiểm thử và theo dõi hệ thống, không nên chỉ dựa vào một bài chạy.
Kết luận
Với k6, bạn có thể bắt đầu kiểm thử tải website bằng một kịch bản JavaScript ngắn, tăng tải theo từng bước và đặt ngưỡng để nhận biết bài chạy có đạt yêu cầu hay không. Hãy chú ý đến thời gian phản hồi, tỷ lệ lỗi, log và tài nguyên máy chủ thay vì chỉ nhìn vào một con số tổng hợp.
Thử nghiệm trên môi trường phù hợp, ghi lại kết quả và chạy lại sau khi tối ưu sẽ giúp bạn phát hiện sớm điểm nghẽn trước khi website đón lượng truy cập lớn. Nếu đang chuẩn bị đưa website vào hoạt động, hãy bắt đầu với một luồng quan trọng và mở rộng bài kiểm thử khi đã hiểu rõ kết quả.
Bản ghi CAA giúp giới hạn những tổ chức được phép cấp chứng chỉ SSL cho tên miền. Tìm hiểu cách kiểm tra record và cấu hình phù hợp để giảm nguy cơ cấp chứng chỉ ngoài ý muốn.
HTTP/2 và HTTP/3 đều giúp truyền tải nội dung web hiệu quả hơn, nhưng khác nhau ở cách kết nối và xử lý dữ liệu. Tìm hiểu điểm khác biệt và những điều cần kiểm tra trước khi lựa chọn.