GoCardless
Mạch tiến hoá
Công ty thanh toán chạy Postgres trên bare-metal. Hai bài cho thấy hai mặt của độ tin cậy DB: một migration schema "vô hại" gây 15 giây downtime vì hàng đợi khoá GoCardless 2015, và một lần primary hỏng mà Pacemaker không promote được, gây 1 giờ 50 phút downtime GoCardless 2017. Năm 2020, một chứng chỉ TLS của Vault (phụ thuộc của gần mọi service) không được nạp lại sau khi gia hạn, kéo sập toàn bộ dịch vụ 22 phút GoCardless 2020. Bài học về hàng đợi khoá dẫn tới Nandi (khoảng 2020), một compiler migration chỉ cho phép thao tác an toàn GoCardless 2020. Năm 2019, khi DB khoảng 2 TB, một sự cố hiệu năng dẫn GoCardless vào bên trong query planner: thống kê sai làm planner chọn quét cả bảng GoCardless 2019.
Timeline
Năm = năm sự kiện theo bài (có thể sớm hơn năm đăng bài).
| Năm | Giai đoạn | Thay đổi | Nguồn |
|---|---|---|---|
| 2015 | 2. Tăng trưởng | Sự cố 15 giây do khoá AccessExclusive khi thêm foreign key; dùng lock_timeout, chia nhỏ DDL. | GoCardless 2015 |
| 2017 | 2. Tăng trưởng | Sập 1h50 vì Pacemaker không promote; dựng cluster mới, chuyển bằng PgBouncer tạm dừng query. | GoCardless 2017 |
| 2019 | 2. Tăng trưởng | Query LIMIT 1 trên bảng gần nửa tỉ dòng đột ngột chậm: n_distinct ước thiếu hai bậc do ANALYZE lấy mẫu theo page; tăng statistics target lên 5.000. | GoCardless 2019 |
| 2020 | 3. Quy mô lớn | Sập 22 phút: chứng chỉ TLS của Vault đã gia hạn nhưng chưa được nạp; envconsul kéo chết app khi gia hạn lease thất bại. | GoCardless 2020 |
| 2020 | 3. Quy mô lớn | Nandi: DSL migration chỉ cho thao tác an toàn về khoá, phân tích tĩnh, gần 600 migration. | GoCardless 2020 |