Cloudflare ra mắt tính năng Profiling CPU và bộ nhớ theo yêu cầu cho Workers và Durable Objects
Cloudflare vừa giới thiệu khả năng profiling CPU và bộ nhớ trực tiếp trên môi trường production cho Workers và Durable Objects, giúp lập trình viên tối ưu hóa hiệu năng và khắc phục lỗi bộ nhớ thông...
Việc xác định nguyên nhân khiến một ứng dụng tiêu tốn tài nguyên CPU hoặc bộ nhớ vượt mức dự kiến thường là một thách thức lớn. Các phương pháp truyền thống như kiểm tra log hay chỉ số tổng hợp (aggregate metrics) đôi khi không cung cấp đủ thông tin chi tiết. Để giải quyết vấn đề này, Cloudflare vừa chính thức hỗ trợ tính năng CPU và memory profiling cho Workers và Durable Objects.
Table Of Content
Phân tích hiệu năng trực tiếp trên môi trường Production
Với tính năng mới này, lập trình viên có thể yêu cầu tạo profile CPU hoặc bộ nhớ cho một Worker đang hoạt động thông qua trang Observability trên dashboard của Cloudflare. Kết quả sẽ được hiển thị dưới dạng flamegraph tương tác, cho phép người dùng quan sát trực quan các hàm đang tiêu thụ tài nguyên. Bạn cũng có thể tải xuống tệp profile để phân tích sâu hơn.
Việc thực hiện profiling ngay trên môi trường production mang lại cái nhìn chính xác nhất về cách mã nguồn vận hành trong thực tế, từ đó đưa ra các phương án tối ưu hóa hiệu quả.
Cách thức sử dụng
Người dùng có thể kích hoạt tính năng này thông qua CLI hoặc giao diện Dashboard:
- Qua Dashboard: Truy cập mục Build → Compute → Workers & Pages, chọn Worker cần kiểm tra, sau đó vào tab Observability và chọn Flamegraph từ menu thả xuống.
- Qua CLI: Sử dụng gói
cfđể gửi lệnh yêu cầu profiling trực tiếp.
Lưu ý rằng đối với các dự án TypeScript, bạn cần đảm bảo đã bật source maps để tên các hàm trong biểu đồ dễ đọc và không bị mã hóa (obfuscated).
Ứng dụng thực tế: Tối ưu hóa và khắc phục lỗi
Cloudflare đã chia sẻ một số trường hợp thực tế mà đội ngũ kỹ thuật của họ đã áp dụng công cụ này:
- Tối ưu hóa CPU: Bằng cách phân tích flamegraph, kỹ sư phát hiện các hàm đệ quy gây lãng phí chu kỳ CPU không cần thiết. Việc loại bỏ các thao tác trùng lặp trong hàm
genericR2JsonReplacerđã giúp cải thiện tốc độ xử lý lên 2,7 lần. - Khắc phục lỗi bộ nhớ (OOM): Một Worker thường xuyên gặp lỗi “Exceeded Memory” đã được chẩn đoán thành công. Profiling cho thấy các đoạn mã Prometheus dù được cho là đã tắt nhưng vẫn chiếm dụng tài nguyên đáng kể. Sau khi loại bỏ hoàn toàn các đoạn mã này, mức tiêu thụ bộ nhớ P999 đã giảm từ 133 MB xuống 118 MB, nằm trong ngưỡng an toàn.
Cơ chế hoạt động tại Edge
Workers chạy trên mạng lưới toàn cầu, vì vậy việc profiling đòi hỏi sự phối hợp phức tạp giữa các trung tâm dữ liệu. Cloudflare đã thiết kế hệ thống để đảm bảo việc profiling không làm gián đoạn quá trình thực thi của Worker. Hệ thống chỉ khóa isolate trong thời gian cực ngắn để bắt đầu và kết thúc quá trình lấy mẫu, đảm bảo ứng dụng vẫn xử lý các request bình thường trong suốt thời gian profiling.
Đối với Durable Objects, do tính chất có trạng thái (stateful), hệ thống cho phép bạn chỉ định chính xác tên đối tượng cần profiling, từ đó định tuyến yêu cầu đến đúng server vật lý đang lưu trữ actor đó.
Hướng đi tiếp theo
Mặc dù profiling theo yêu cầu là một bước tiến lớn, Cloudflare cho biết họ đang phát triển tính năng continuous profiling (profiling liên tục). Điều này sẽ cho phép hệ thống tự động thu thập dữ liệu định kỳ, giúp lập trình viên dễ dàng truy vết các sự cố hiếm gặp mà không cần phải chủ động kích hoạt thủ công.
Nguồn tham khảo: Cloudflare Blog



No Comment! Be the first one.