-
Heap đang vận hành Postgres đa petabyte để phục vụ phân tích
-
Khi tăng trưởng nhanh, mức sử dụng node vượt 80% và gây ra vấn đề hiệu năng trong pipeline thu thập dữ liệu
-
Nguyên nhân của vấn đề là SSD có xu hướng suy giảm hiệu năng khi mức sử dụng tiến gần 100%
-
Vấn đề trở nên tệ hơn do sử dụng ZFS, một hệ thống tệp CoW (Copy-on-Write)
→ Mỗi khi một block được cập nhật, một bản sao mới sẽ được ghi ra
- Tất nhiên, CoW cũng có nhiều ưu điểm
→ Nén ở cấp hệ thống tệp dễ thực hiện hơn so với các hệ thống tệp khác, giúp tiết kiệm không gian với tỷ lệ nén 4-5x
→ Độ bền cao hơn nên có thể vô hiệu hóa full_page_writes của Postgres, từ đó cải thiện hiệu năng và giảm tổng IO
→ Snapshot point-in-time đảm bảo tính nhất quán - do các trang thực tế không thể bị thay đổi nên vẫn giữ được trang cũ ngay cả trong lúc snapshot
- Tuy nhiên, các hệ thống tệp CoW như ZFS sẽ giảm hiệu năng khi dung lượng đầy dần
→ Mỗi lần cập nhật trang, block allocator phải tìm block trống, nên khi mức sử dụng cao thì suy giảm hiệu năng sẽ rất nghiêm trọng
→ Cần xóa các block đã được unlink trước đó và trộn chúng với các block hiện có
→ Tình hình còn tệ hơn vì để đạt tỷ lệ nén cao hơn, kích thước block đã được đặt lớn tới 64kb
→ Vì những lý do này, tốt nhất là không để mức sử dụng của ZFS vượt quá 80%
- Nhóm đã thử nâng cấp lên ZFS 2.x và chuyển từ nén lz4 sang nén Zstandard
→ lz4 cực kỳ nhanh và cho tỷ lệ nén khoảng 4.4x
→ Zstandard cho tỷ lệ nén tới khoảng 5.5x, tương đương cải thiện 20%
→ Tuy nhiên, nhiều benchmark cho thấy Zstandard chậm hơn lz4
→ Vì vậy, nhóm quyết định kiểm thử nghiêm ngặt trong điều kiện thực tế
→ Kết quả kiểm thử cho thấy hiệu năng truy vấn không đổi, mức sử dụng lưu trữ giảm khoảng 20%, và thời gian truy vấn ghi giảm một nửa
- Cụm DB của Heap được chia thành 5 node, mỗi node thuộc một ASG riêng
→ Việc thay node khá đơn giản: chỉ cần tách node khỏi ASG, ASG sẽ tạo node mới, khôi phục từ bản backup cuối cùng và chuyển sang chế độ warm standby
→ Tạo một AMI với cấu hình mới rồi triển khai lần lượt từng node
→ Tổng mức sử dụng giảm khoảng 21%, thời gian ghi giảm 50%, còn hiệu năng truy vấn gần như không thay đổi
1 bình luận
Arch Linux đã thay công cụ nén gói từ xz sang Zstandard https://vi.news.hada.io/topic?id=1227
Thời kỳ phục hưng của các thuật toán nén https://vi.news.hada.io/topic?id=1228
Bài viết không nhắc đến mức sử dụng CPU, nhưng khi xem bình luận của tác giả gốc trên HN thì thấy nói rằng nó đã tăng từ khoảng ~40% lên ~50%. (Ý là Zstd dùng CPU nhiều hơn)