1. Giới Thiệu
Chúc mừng năm mới đến tất cả anh chị em và bạn bè!!!
Trong thời gian gần đây, mình đã có cơ hội làm việc nhiều với K6 - một công cụ mạnh mẽ và tiện lợi cho việc kiểm tra hiệu suất. Tuy vậy, đối với các bài kiểm tra phức tạp với số lượng lượng lớn Người Dùng Ảo (VUs) hay tốc độ yêu cầu cao (RPS), cũng như các trường hợp tải lên tệp lớn, việc tối ưu hóa tài nguyên khi sử dụng K6 trở nên vô cùng quan trọng. Việc này không chỉ giúp tiết kiệm tài nguyên mà còn đảm bảo tính ổn định và hiệu suất tối ưu trong quá trình kiểm tra. Nhiều người mới sử dụng có thể bỏ qua vấn đề này, do đó bài viết này sẽ chia sẻ các phương pháp hiệu quả để tối ưu hóa tài nguyên khi thực hiện kiểm tra hiệu suất bằng K6.
2. Giới Thiệu Về K6
Mình đã viết một bài tổng quan về K6 trước đây, các bạn có thể tìm hiểu thêm tại đây.
3. Các Tùy Chọn Của K6 Giúp Giảm Tiêu Thụ Tài Nguyên
Dưới đây là một số tùy chọn cấu hình K6 có thể giúp giảm tiêu tốn tài nguyên trong quá trình thực hiện các bài kiểm tra lớn:
3.1. Tiết Kiệm Bộ Nhớ Với discardResponseBodies
Mặc định, K6 tải tất cả nội dung phản hồi vào bộ nhớ, điều này có thể dẫn đến tiêu tốn bộ nhớ cao hơn cần thiết. Bạn có thể sử dụng tùy chọn discardResponseBodies
để chỉ lấy thông tin header. Cấu hình như sau:
export const options = {
discardResponseBodies: true,
};
Nếu bạn cần lưu lại một số phần body nhất định, bạn có thể cấu hình cho những yêu cầu cụ thể như sau:
http.get('https://example.com', {
responseType: 'text',
})
3.2. Tắt --no-thresholds
và --no-summary
Khi Truyền Dữ Liệu
Nếu bạn chạy bài kiểm tra và gửi báo cáo lên dịch vụ đám mây như K6 Cloud, tắt báo cáo tổng kết và các ngưỡng sẽ tiết kiệm tài nguyên:
k6 run scripts/test.js \
-o cloud \
--vus=100000 \
--duration=10m \
--no-thresholds \
--no-summary
4. Tối Ưu Hóa Kịch Bản
Hãy tối ưu mã của kịch bản kiểm thử để tận dụng tối đa hiệu suất phần cứng. Để làm được điều này, hãy xem xét các hoạt động tốn tài nguyên sau:
4.1. Hạn Chế Các Hoạt Động Tốn Tài Nguyên Của K6
Các tính năng như Checks, Custom Metrics và Thresholds đòi hỏi bộ nhớ và CPU cao. Hãy cân nhắc sử dụng hạn chế những tính năng này trong kịch bản của mình.
4.2. Tối Ưu Vòng Đời
Hãy sử dụng setup
cho các logic và dữ liệu chỉ cần gọi một lần duy nhất. Đoạn mã mẫu:
export function setup() {
const res = http.get('https://httpbin.test.k6.io/get');
return { data: res.json() };
}
4.3. Tối Ưu Hóa JavaScript
Tránh sử dụng vòng lặp lồng sâu và giữ số lượng external JS dependencies ở mức tối thiểu.
5. Giải Quyết Vấn Đề Upload File
Khi upload file lớn, K6 tiêu thụ nhiều bộ nhớ. Sử dụng SharedArray
có thể giảm thiểu tình trạng này.
Ví dụ sử dụng SharedArray
:
import { SharedArray } from 'k6/data';
const data = new SharedArray('users', function () {
const f = JSON.parse(open('./users.json'));
return f;
});
6. Kết Luận
Chúng ta đã tìm hiểu các phương pháp tối ưu hóa cấu hình và kịch bản K6 để giảm thiểu tài nguyên tiêu thụ trong các cuộc kiểm tra hiệu suất. Nếu bạn gặp khó khăn với số lượng lớn VUs hoặc dung lượng file lớn, hãy nghĩ đến việc nâng cấp tài nguyên cho hệ thống của bạn. Chúc bạn thành công trong việc tối ưu hóa kiểm tra hiệu suất của mình! 😉
source: viblo