Sổ tay xử lý sự cố
Quy trình xử lý các sự cố thường gặp.
Sự cố kết nối
Mất kết nối WebSocket
Dấu hiệu: Mất kết nối WebSocket, không nhận được tin nhắn nào
Hành động:
- Triển khai tự động kết nối lại với exponential backoff
- Truy vấn các endpoint REST để bù lại các cập nhật bị bỏ lỡ
- Đăng ký lại tất cả các kênh sau khi kết nối lại
Phòng ngừa: Giám sát trạng thái kết nối và triển khai logic kết nối lại vững chắc
API Timeout
Dấu hiệu: Các yêu cầu REST bị timeout hoặc trả về lỗi 5xx
Hành động:
- Thử lại với exponential backoff
- Kiểm tra endpoint health:
GET /health - Giảm tần suất yêu cầu nếu hệ thống đang quá tải
Phòng ngừa: Triển khai giới hạn tần suất yêu cầu và circuit breaker
Sự cố lệnh
Tỷ lệ từ chối cao
Dấu hiệu: Nhiều lệnh bị từ chối
Điều tra:
- Ghi log
statusvàreasontừ mọi phản hồi lệnh và mọi tin nhắn WebSocketorder_updates.GET /orders?wallet=...mặc định trả về các lệnh đang mở và không kèm lý do từ chối - Xem lại ký quỹ:
GET /portfolio?wallet=... - Kiểm tra giới hạn tài khoản:
GET /risk/limits?wallet=... - Xác nhận công cụ chưa đáo hạn:
GET /instruments?currency=...
Hành động:
- Nếu do ký quỹ: Giảm quy mô vị thế hoặc nạp thêm tài sản thế chấp
- Nếu do tier: dùng vị thế long sẵn có để bao các lệnh bán, hoặc liên hệ Hypercall về việc thay đổi tier
- Nếu đã đáo hạn: Sử dụng công cụ khác
Thiếu thông báo khớp lệnh
Dấu hiệu: Lệnh đã khớp nhưng không nhận được thông báo khớp lệnh
Điều tra:
- Kiểm tra
GET /fills?wallet=...để xem các lệnh đã khớp - Xác nhận đã đăng ký kênh WebSocket
fills - Kiểm tra trạng thái kết nối WebSocket
Hành động:
- Đăng ký lại kênh
fills - Truy vấn endpoint REST để lấy các lệnh khớp bị bỏ lỡ
- Đối chiếu lệnh khớp với trạng thái lệnh
Trạng thái lệnh bị lỗi thời
Dấu hiệu: Trạng thái lệnh trên REST không khớp với WS
Điều tra:
- Kiểm tra trạng thái kết nối WebSocket
- Xác nhận bộ nhớ đệm lệnh được cập nhật
- So sánh trạng thái lệnh giữa REST và WS
Hành động:
- Truy vấn REST sau khi WS kết nối lại để bắt kịp
- Dùng REST làm nguồn dữ liệu chuẩn khi đối chiếu
Sự cố MMP
MMP kích hoạt quá thường xuyên
Dấu hiệu: Nhiều lệnh bị MMP hủy
Điều tra:
- Kiểm tra cấu hình MMP bằng một yêu cầu có chữ ký
GET /mmp-config?wallet=...¤cy=... - Xem lại mô hình khớp lệnh và các chỉ số tích lũy
- Kiểm tra xem giới hạn có quá thấp không
Hành động:
- Tăng giới hạn MMP (qty, delta, vega)
- Tăng
interval_msđể cho phép nhiều lệnh khớp hơn trong cửa sổ - Giảm tần suất báo giá
MMP không kích hoạt
Dấu hiệu: Lệnh khớp vượt giới hạn nhưng MMP không kích hoạt
Điều tra:
- Xác nhận MMP đã bật bằng một yêu cầu có chữ ký
GET /mmp-config?wallet=...¤cy=... - Kiểm tra
mmp_enabled=truetrên các lệnh - Xác nhận currency khớp với tài sản cơ sở của lệnh
Hành động:
- Bật MMP trên lệnh:
mmp_enabled=true - Cấu hình MMP cho đúng currency
- Điều chỉnh giới hạn nếu cần
Các yêu cầu đọc MMP có chữ ký gửi thời hạn và chữ ký GetMmpConfig trong
header X-Hypercall-Expires-At-Ms và X-Hypercall-Signature.
Sự cố ký quỹ
Không đủ ký quỹ
Dấu hiệu: Lệnh bị từ chối với thông báo "Insufficient margin"
Điều tra:
- Kiểm tra danh mục:
GET /portfolio?wallet=... - Xem lại cách tính ký quỹ
- Kiểm tra kịch bản nào đang không đạt
Hành động:
- Giảm quy mô vị thế
- Nạp thêm tài sản thế chấp
- Đóng vị thế để giải phóng ký quỹ
- Phòng hộ mức độ phơi nhiễm để giảm khoản lỗ trong kịch bản xấu nhất
Thiếu giá spot
Dấu hiệu: Lệnh bị từ chối với lý do bắt đầu bằng "Missing spot price for underlying"
Điều tra:
- Kiểm tra
index_pricecủa tài sản cơ sở trongGET /markets - Xác nhận ký hiệu tài sản cơ sở là chính xác
- Kiểm tra trang trạng thái xem có sự cố oracle không
Hành động:
- Chờ nguồn cấp giá spot phục hồi
- Sử dụng tài sản cơ sở khác nếu có
- Liên hệ bộ phận hỗ trợ nếu sự cố vẫn tiếp diễn
Sự cố hệ thống
Độ trễ cao
Dấu hiệu: Phản hồi API chậm hoặc tin nhắn WebSocket bị trễ
Điều tra:
- Kiểm tra tải hệ thống
- Giám sát thời gian phản hồi
- Kiểm tra kết nối mạng
Hành động:
- Giảm tần suất yêu cầu
- Triển khai giới hạn tần suất yêu cầu
- Liên hệ bộ phận hỗ trợ nếu sự cố vẫn tiếp diễn
Giới hạn tần suất
Dấu hiệu: Yêu cầu bị từ chối hoặc bị điều tiết
Hiện tại: Giới hạn tần suất được áp dụng theo từng ví, với các giới hạn riêng theo nguồn cho lệnh hủy, ủy quyền agent, ghi MMP và mô phỏng rủi ro. Xem Giới hạn tần suất để biết chi tiết.
Hành động:
- Kiểm tra header
Retry-Aftervà chờ trước khi thử lại - Theo dõi
X-RateLimit-Remainingđể tránh chạm giới hạn - Sử dụng các endpoint bulk khi có thể
Quy trình khẩn cấp
Kill Switch
Hành động tức thì:
- Hủy tất cả lệnh:
DELETE /bulk_orderhoặcDELETE /bulk_order_cloid, tối đa 50 lệnh mỗi yêu cầu - Ngắt kết nối WebSocket
- Dừng hệ thống báo giá
Khôi phục:
- Xác nhận tất cả lệnh đã bị hủy:
GET /orders?wallet=... - Xem lại danh mục:
GET /portfolio?wallet=... - Điều tra nguyên nhân gốc rễ
- Tiếp tục báo giá sau khi sự cố được khắc phục
Đối chiếu dữ liệu
Sau sự cố:
- Truy vấn các endpoint REST để lấy trạng thái hiện tại
- Đối chiếu lệnh:
GET /orders?wallet=... - Đối chiếu lệnh khớp:
GET /fills?wallet=... - Đối chiếu danh mục:
GET /portfolio?wallet=... - Tiếp tục các đăng ký WebSocket
Chuyển cấp xử lý
Nếu sự cố vẫn tiếp diễn:
- Xem lại các vấn đề đã biết và thông báo staging được cung cấp kèm quyền truy cập
- Kiểm tra Runbooks để biết quy trình chi tiết
- Liên hệ bộ phận hỗ trợ kèm theo:
- Địa chỉ ví
- Thông báo lỗi
- Dấu thời gian
- Các bước tái hiện lỗi