Playwright test trên VPS: vì sao chạy test lại ăn ổ đĩa

Chia sẻ bài viết

Mục lục
Playwright test trên VPS: vì sao chạy test lại ăn ổ đĩa

Trả lời nhanh: Mỗi phiên trình duyệt trong test chiếm khoảng 300 tới 500MB RAM và ghi rất nhiều file tạm: bộ nhớ đệm trình duyệt, ảnh chụp màn hình, video ghi lại, dấu vết gỡ lỗi. Chạy bốn worker song song nghĩa là bốn trình duyệt cùng ghi. Vì vậy cấu hình cần tính theo số worker: khoảng 1GB RAM mỗi worker cộng phần cho hệ điều hành, và ổ NVMe để việc ghi file tạm không thành nút thắt.

Bộ test chạy trên máy cá nhân mất hai phút, đưa lên máy chủ mất tám phút. Máy chủ không yếu hơn, nhưng ổ đĩa của nó thì có thể.

Tóm tắt nhanh
  • Mỗi phiên trình duyệt chiếm 300 tới 500MB RAM.
  • Test ghi rất nhiều file tạm: bộ nhớ đệm, ảnh, video, dấu vết.
  • Tính khoảng 1GB RAM cho mỗi worker song song.
  • Tắt ghi video khi không cần, đây là thứ ăn ổ đĩa nhiều nhất.

Test trình duyệt ghi những gì

  • Bộ nhớ đệm của trình duyệt cho từng phiên.
  • Ảnh chụp màn hình khi test thất bại.
  • Video ghi lại quá trình chạy nếu bật.
  • Dấu vết gỡ lỗi, đây là loại file rất nặng.
  • File tải xuống nếu kịch bản test có thao tác tải file.

Cộng lại, một bộ test vài trăm kịch bản có thể ghi hàng GB dữ liệu tạm mỗi lượt chạy. Trên ổ chậm, phần ghi này trở thành nút thắt và các worker phải chờ nhau.

Tính tài nguyên theo số worker

Số workerRAM nên cóGhi chú
12GBChậm nhưng chắc
24GBCân bằng cho dự án nhỏ
46 tới 8GBPhổ biến cho dự án vừa
812GB trở lênCần ổ NVMe, nếu không sẽ tắc ở ổ

Thiếu RAM khi chạy nhiều worker dẫn tới trình duyệt bị hệ thống tắt giữa chừng, và test thất bại với lỗi khó hiểu không liên quan gì tới mã của bạn. Đây là nguồn gốc của rất nhiều test bị coi là chập chờn.

Bốn cách giảm thời gian chạy

  1. Tắt ghi video, chỉ bật khi test thất bại. Đây là thay đổi hiệu quả nhất, video là thứ ăn ổ đĩa nhiều nhất.
  2. Dùng chế độ không giao diện. Nhẹ hơn đáng kể so với chạy có cửa sổ.
  3. Dùng lại trạng thái đăng nhập. Đăng nhập lại ở mỗi kịch bản là lãng phí lớn.
  4. Đặt thư mục kết quả trên ổ nhanh và dọn sau mỗi lượt.

Test chập chờn và tài nguyên

Một điều đáng nói: nhiều test bị gắn nhãn chập chờn thực ra là nạn nhân của máy quá tải. Khi máy chậm, thao tác chờ phần tử xuất hiện dễ vượt quá thời gian cho phép và test thất bại ngẫu nhiên.

Trước khi sửa mã test, hãy thử giảm số worker hoặc chạy trên máy có ổ nhanh hơn. Không ít trường hợp test tự hết chập chờn mà không cần sửa dòng nào.

Kiểm thử trình duyệt ghi những gì xuống ổ

Thứ được ghiKích thước điển hìnhCó cần giữ không
Ảnh chụp màn hình khi kiểm thử thất bạivài trăm KB mỗi ảnhCần, nhưng chỉ giữ vài lần chạy gần nhất
Video ghi lại phiên kiểm thửvài MB tới vài chục MB mỗi lầnChỉ bật khi cần gỡ lỗi
Tệp dấu vết chi tiếtcó thể rất lớnChỉ bật khi kiểm thử thất bại
Hồ sơ trình duyệt tạm cho mỗi phiênvài chục MB mỗi phiênKhông, xóa sau mỗi lần chạy
Bản tải trình duyệtvài trăm MBGiữ, nhưng dùng chung giữa các lần chạy

Cấu hình mặc định của nhiều dự án bật ghi video và dấu vết cho mọi lần chạy. Với bộ kiểm thử vài trăm ca chạy nhiều lần mỗi ngày, đây là nguyên nhân số một làm đầy ổ đĩa.

Tính tài nguyên theo số tiến trình song song

# Moi tien trinh chay mot trinh duyet rieng, moi trinh duyet an
# khoang 300 MB den 1 GB bo nho tuy trang duoc kiem thu

# Do that trong luc chay
watch -n2 'free -h; ps -eo rss,comm --sort=-rss | head -8'

# Dat so tien trinh theo bo nho, khong theo so nhan
# May 8 GB: khoang 4 den 6 tien trinh
# May 16 GB: khoang 8 den 12

# Chi bat ghi video va dau vet khi that bai, khong bat mac dinh
# Don ket qua cu tu dong
find ./test-results -type d -mtime +7 -exec rm -rf {} + 2>/dev/null
du -sh ./test-results ./playwright-report 2>/dev/null

Cắt thời gian chạy bộ kiểm thử

  • Chỉ ghi video và dấu vết khi kiểm thử thất bại. Đây là thay đổi cho hiệu quả lớn nhất và không mất gì.
  • Tăng số tiến trình song song tới mức bộ nhớ cho phép, nhưng đừng vượt, vì hết bộ nhớ làm kiểm thử thất bại ngẫu nhiên.
  • Dùng ổ NVMe. Mỗi phiên trình duyệt tạo và xóa rất nhiều tệp nhỏ, đúng thế mạnh của ổ này.
  • Tách nhóm kiểm thử: nhóm nhanh chạy mỗi lần đẩy mã, nhóm đầy đủ chạy ban đêm.

Kiểm thử chập chờn và tài nguyên

Một điểm ít người nối lại: kiểm thử thất bại ngẫu nhiên thường không phải lỗi mã, mà là máy thiếu tài nguyên. Khi bộ nhớ gần cạn hoặc ổ đĩa nghẽn, thời gian phản hồi vượt ngưỡng chờ và kiểm thử báo lỗi. Trước khi đi sửa mã kiểm thử, hãy chạy lệnh theo dõi ở trên trong lúc bộ kiểm thử chạy.

Câu hỏi thường gặp

Playwright cần bao nhiêu RAM?

Khoảng 1GB cho mỗi worker song song, cộng phần cho hệ điều hành. Bốn worker thì nên có 6 tới 8GB.

Vì sao test chạy trên máy chủ chậm hơn máy cá nhân?

Thường vì ổ đĩa chậm hơn, do test ghi rất nhiều file tạm. Cũng có thể do số worker đặt quá cao so với tài nguyên.

Làm sao giảm dung lượng test ghi ra?

Tắt ghi video mặc định và chỉ giữ dấu vết gỡ lỗi khi test thất bại. Hai thay đổi này giảm phần lớn lượng ghi.

Test chập chờn có liên quan tài nguyên không?

Có, khá thường xuyên. Máy quá tải làm thao tác chờ vượt thời gian cho phép và test thất bại ngẫu nhiên.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Truy vấn SQL, PHP dựng trang, build Next.js hay đóng gói app iOS và Android: phần lớn các bước này chạy đơn luồng và đập liên tục vào ổ đĩa. Nghẽn nằm ở tốc độ đọc ghi và xung nhịp CPU, không phải ở việc có thật nhiều nhân. Ổ Enterprise U.2 NVMe chuẩn máy chủ chạy RAID 10 cho IOPS đọc ghi ngẫu nhiên gấp 5 đến 7 lần ổ SATA SSD, khác hẳn NVMe M.2 phổ thông. Chạy trên chip Intel Xeon Platinum dòng xung cao, backup tự động hàng tuần, bàn giao trong 5 phút.
Xem VPS ổ Enterprise U.2 NVMe, bàn giao trong 5 phút

Bài viết liên quan