Bỏ qua để đến nội dung
Knowledge Hub

Tình huống: sự cố 3 giờ sáng, p99 checkout lên 4 giây Trung cấp

Thời gian đọc ước tính: 1 phút

Pager kêu lúc 3 giờ sáng: checkout chậm gấp 20 lần, lỗi đang tăng, và có một bản deploy từ 40 phút trước. Bạn đi qua bốn quyết định: hành động đầu tiên, cập nhật cho stakeholder, tìm nguyên nhân và viết postmortem.

  • Đọc kỹ evidence trước khi bấm: CPU, event loop delay và pg_stat_activity đã gợi ý gần hết.
  • Chọn sai thì đọc giải thích rồi Chọn lại; điểm chỉ tính lựa chọn đầu tiên ở mỗi bước.
Tình huống

Sự cố 3 giờ sáng: p99 checkout từ 200 ms lên 4 giây

Bạn là on-call backend của team checkout. Đêm nay chỉ có bạn và một người secondary đang được gọi dậy. Mọi mốc giờ dưới đây là UTC (03:07 giờ Việt Nam = 20:07 UTC).

p99 checkout200 ms
Request lỗi 5xx0,1 %
Session idle in transaction0
Error budget đã tiêu (28 ngày)12 %

Bước 1/4 · Pager kêu lúc 03:07

Alert burn rate SLO checkout. p99 đã từ 200 ms lên hơn 4 giây, lỗi 5xx đang tăng. Bạn đã ack, mở incident doc và declare SEV2, tự làm IC.

Thay đổi gần nhất: api v3.14 deploy lúc 19:27 UTC, 40 phút trước, thêm tính năng tích điểm loyalty khi thanh toán. Bản này không kèm migration.

p99 bắt đầu leo
19:58 UTC
CPU api
15%
event loop delay p99
11 ms
burn rate
~250x
-- pg_stat_activity lúc 20:08 UTC
 state               | wait_event_type | wait_event    | count
---------------------+-----------------+---------------+------
 idle in transaction | Client          | ClientRead    |    41
 active              | Lock            | transactionid |   118
 idle                | Client          | ClientRead    |     9

-- log api
Error: timeout exceeded when trying to connect   (pool 30/30 mỗi pod, waiting 300+)

Bạn làm gì?

Chơi xong, đọc Ứng cứu sự cố để có bảng “triệu chứng → nhìn gì → mitigate gì” và checklist on-call đầy đủ.