3 điểm bởi xguru 3 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Công cụ tiêm lỗi dùng để chủ động tạo ra các tình huống sự cố như cạn kiệt kết nối/chờ khóa/deadlock/OOM/hết dung lượng đĩa nhằm kiểm thử
  • Hỗ trợ nhiều workload, từ transaction nhàn rỗi/rollback/deadlock/tệp tạm/thêm kết thúc backend cho đến WAL tăng vọt/phình to bảng
  • Một số workload có thể vượt ra ngoài việc làm cạn max_connections, gây trễ replication hoặc suy giảm hiệu năng storage, và dẫn đến PANIC hoặc khởi động lại toàn bộ instance PostgreSQL
  • Có thể chạy ngay bằng Docker image hoặc import từng workload trong mã Go; bắt buộc dùng context và timeout để tránh chạy vô hạn
  • Workload được hỗ trợ
    • idle transactions: Mở transaction rồi không làm gì, cản trở dọn dẹp (VACUUM) và làm phình bảng/index
    • rollbacks: Cố tình gửi truy vấn sai để gây lỗi và tăng số lần rollback
    • waiting transactions: Một session khóa bảng, các kết nối phía sau lần lượt chờ, cuối cùng đạt giới hạn kết nối (max_connections) và chặn kết nối mới
    • deadlocks: Đẩy hai transaction vào trạng thái deadlock khi chúng muốn khóa của nhau
    • temporary files: Buộc sắp xếp dữ liệu lớn hơn bộ nhớ (work_mem) để đổ tệp tạm ra đĩa (sẽ biến mất nếu tăng work_mem)
    • terminate backends: Cưỡng bức kết thúc ngẫu nhiên các session/truy vấn đang chạy bằng pg_terminate_backend() và các cách tương tự
    • failed connections: Giữ toàn bộ kết nối để các client khác hoàn toàn không thể kết nối. Làm cạn giới hạn max_connections
    • fork connections: Mỗi lần dùng một kết nối mới chỉ để gửi truy vấn ngắn, khiến Postgres tạo quá nhiều tiến trình con
    • backend-killer: Một session liên tục tích lũy prepared statement làm bộ nhớ phình ra, rồi bị OOM-kill khiến toàn bộ instance khởi động lại
    • slot-bloat: Một replication slot không ai đọc giữ WAL lại, lấp đầy pg_wal đến khi hết đĩa và làm instance PANIC
    • wal-flood: Dùng các worker UPDATE song song để làm WAL tăng vọt, tạo trễ replication/áp lực IO (phiên bản "nhìn thấy được" của slot-bloat; việc đầy đĩa tùy môi trường)
    • bloat-churn: Dùng UPDATE song song để làm bảng phình nhanh hơn autovacuum; sau khi dừng có thể khôi phục bằng VACUUM FULL/pg_repack/REINDEX CONCURRENTLY
  • Không chạy khi chưa hiểu đầy đủ; chỉ nên dùng giới hạn cho mục đích kiểm thử
  • Giấy phép BSD-3-Clause

Chưa có bình luận nào.

Chưa có bình luận nào.