Trong bài này
18/05/2023
Test chịu tải của Server là bước quan trọng cần thực hiện khi vận hành website. Khả năng chịu tải của trang web đến khả năng xử lý HTTP request của máy chủ. Nếu không tính toán trước khả năng chịu tải của web servre, kết nối giữa người dùng và website có thể bị gián đoạn và báo lỗi “500 Internal Server Error”. Cùng tìm hiểu cách kiểm tra chịu tải của server thông qua công cụ Artillery.
Artillery là một trong những công cụ test chịu tải của Server phổ biến nhất hiện nay. Phần mềm Artillery có hai phiên bản là Community Edition (miễn phí) và Pro Edition (trả phí). Phiên bản miễn phí thường được sử dụng cho mục đích cá nhân, trong khi đó bản trả phí giá từ 199$ thích hợp với các hệ thống lớn của công ty, doanh nghiệp. Trong bài viết này, chúng ta sẽ tìm hiểu cách test chịu tải bằng phiên bản miễn phí.

Công cụ Artillery test chịu tải của Server có hai phiên bản miễn phí và trả phí
Để thực hiện kiểm tra độ chịu tải cho web server với Artillery, trước tiên bạn cần cài Node.js phiên bản 10.16.3 trở lên. Sau khi thiết lập Node.js phiên bản mới, bạn thực hiện chạy câu lệnh cài đặt sau:
npm install -g artilleryBạn có thể kiểm tra phiên bản Artillery, với câu lệnh:
artillery -VNếu artillery -V trả về phiên bản hiện tại, cài đặt được hoàn tất. Trong trường hợp không check được phiên bản, việc cài đặt vẫn chưa thành công.
Sau khi cài đặt Artillery thành công, bạn có thể thử chạy một vài câu lệnh test đơn giản:
artillery quick --count 10 -n 20 https://artillery.io/Khi thực hiện câu lệnh trên, bạn đã tạo ra 10 “user ảo”, mỗi user gửi 20 HTTP request (GET) tới địa chỉ https://artillery.io/
Câu lệnh trên chỉ là ví dụ đơn giản với lệnh quick. Trên thực tế, người dùng truy cập web và tương tác với server theo kịch bản chứ không đơn thuần gửi request như ví dụ.
Trước khi thực hiện test chịu tải của Server theo kịch bản, bạn cần ghi nhớ một số từ khóa để thiết lập cấu hình:
- Trong phase có thể khai báo nhiều phase liên tiếp với thời gian và tần suất request khác nhau.
- Bên cạnh đó, bạn có thể đặt tên cho từng phases, sử dụng pause để tạo ra một phase tạm dừng, không thực hiện bất cứ thao rác gì.
- Với rampTo, bạn có thể hiểu nó giống như vòng for, ví dụ khi khai báo arrivalRate: 0 và rampTo: 10 thì artillery sẽ chia thành các phase liên tiếp với arrialRate lần lượt là 0, 1, 2, 3, 4, 5,... , 10.
environments:
production:
target:
phases:
staging:
target:
phases:- Trong đó, flow là một mảng khai báo các hành động user ảo sẽ thực hiện trong scenarios, chẳng hạn request GET/POST đến HTTP application.
- Thuộc tính name mô tả chi tiết hoạt động scenarios. - Thuộc tính weight là trọng số của scenarios, có thể hiểu là tỉ lệ % scenarios được chọn thực hiện.
Sau khi tạo kịch bản test, kết quả thu được là một file .yml cấu trúc tương tự như sau:
config:
target: 'https://artillery.io' #địa chỉ muốn test
phases: #có thể khai báo để chạy nhiều phases với cài đặt cụ thể khác nhau
- duration: 60 #kéo dài trong 60s
arrivalRate: 20 #trung bình 20 user/giây
name: "tên phase 1"
- pause: 60 #phase này sẽ không thực hiện gì (pause) trong 60s
- duration:
arrivalRate:
name: "tên phase 2"
defaults:
headers:
x-my-service-auth: '987401838271002188298567'
scenarios: #lên kịch bản cho cho từng user
- flow:
- get:
url: "/docs"
- post:
url: "/resourceĐể chạy test example.yml, bạn hãy thực hiện câu lệnh:
artillery run example.ymlKhi Arrtillery chạy test, báo cáo sẽ được trả về Terminal mỗi 10 giây. Kết quả thu được có dạng như sau:
Complete report @ 2019-01-02T17:32:36.653Z
Scenarios launched: 300
Scenarios completed: 300
Requests completed: 600
RPS sent: 18.86
Request latency:
min: 52.1
max: 11005.7
median: 408.2
p95: 1727.4
p99: 3144
Scenario counts:
0: 300 (100%)
Codes:
200: 300
302: 300Trong đó:
Nếu kết quả trả về là giá trị NaN ("not a number"), điều này ngụ ý rằng Artillery không thu thập đủ các phản hồi HTTP để thực hiện tính toán.

Báo cáo test chịu tải của Server được gửi về mỗi 10 giây
Trong trường hợp có lỗi xảy ra trong quá trình kiểm thử, chẳng hạn như gặp phải vấn đề như timeouts của socket, hệ thống sẽ báo cáo về các lỗi trong phần "Errors" của báo cáo.
Dựa vào báo cáo, chúng ta có thể hiểu về tình trạng phản hồi của server dựa trên tổng số request đã gửi đi. - Trong tổng số 600 request đã hoàn thành, có 300 response trả về mã code 200 (OK) và 300 response trả về mã code 302 (Found).
Thông tin về thời gian hoàn tất mỗi request như sau:
Từ báo cáo, có thể nhận thấy rằng server đang xử lý tốt với số lượng request theo kịch bản example.yml, với arrivalRate là 20. Đề xuất có thể tăng arrivalRate để kiểm tra khả năng chịu đựng của máy chủ web trước các request theo kịch bản.
Ngoài ra, có thể tăng thêm các Phase để đa dạng hóa kịch bản gửi request, phù hợp với mục đích sử dụng cụ thể của từng trang web.
Trên đây là hướng dẫn các bước test chịu tải của Server bằng phần mềm Artillery bản miễn phí. Tùy thuộc vào quy mô và tính chất website, kịch bản test server có thể có sự thay đổi phù hợp với trường hợp cụ thể.
CMC Cloud - Giải pháp Điện toán đám mây Toàn diện & Linh hoạt nhất. Cho phép tùy biến sử dụng và quản trị 25+ dịch vụ
CMC Cloud tiếp tục duy trì chứng nhận PCI DSS v4.0.1: Khẳng định năng lực bảo mật trong giai đoạn thực thi toàn diện
CMC Telecom vinh dự nhận giải thưởng “VCSP Rising Star Partner 2026” từ Veeam
Sao lưu bất biến: Gia cố năng lực phục hồi trước tấn công dữ liệu
Khi dữ liệu nhạy cảm không thể rời khỏi doanh nghiệp
AI đã "xoay trục" hạ tầng Cloud như thế nào?
Bài viết liên quan
Cùng chuyên mục
Sao lưu bất biến: Gia cố năng lực phục hồi trước tấn công dữ liệu
20/03/2026
Giải pháp CMC Cloud S3 Storage không chỉ là không gian lưu trữ, mà là công cụ thực thi chiến lược bảo vệ dữ liệu chủ động với tính năng Object Lock trên CMC Cloud, giúp gia cố năng lực phục hồi trước tấn công dữ liệu.
Khi dữ liệu nhạy cảm không thể rời khỏi doanh nghiệp
17/03/2026
Những rào cản về bảo mật, tính tuân thủ và chủ quyền dữ liệu buộc nhiều hệ thống cốt lõi phải duy trì trong hạ tầng riêng biệt. Trong bối cảnh đó, Hybrid Cloud nổi lên như một mô hình chiến lược, giúp tổ chức vừa bảo vệ tài sản dữ liệu quan trọng, vừa tận dụng sức mạnh xử lý của các nền tảng Cloud hiện đại.
Bạn muốn cập nhật thông tin mới nhất từ CMC Cloud?! Hãy để lại địa chỉ email của bạn ngay để nhận những bản tin bổ ích
Điều khoản & Chính sách