Cẩm nang Xử lý Sự cố
Quy trình ứng phó với các vấn đề thường gặp.
Vấn đề Kết nối
Mất kết nối WebSocket
Triệu chứng: Kết nối WebSocket bị mất, không nhận được tin nhắn
Hành động:
- Triển khai tự động kết nối lại với exponential backoff
- Poll các endpoint REST để cập nhật các thay đổi 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
Triệu chứng: Các request REST bị timeout hoặc trả về lỗi 5xx
Hành động:
- Thử lại với exponential backoff
- Kiểm tra health endpoint:
GET /health - Giảm tần suất request nếu hệ thống quá tải
Phòng ngừa: Triển khai giới hạn tần suất request (throttling) và circuit breaker
Vấn đề về Lệnh
Tỷ lệ Từ chối Lệnh Cao
Triệu chứng: Nhiều lệnh bị từ chối
Điều tra:
- Kiểm tra lý do từ chối qua
GET /orders?wallet=... - Xem lại ký quỹ:
GET /portfolio?wallet=... - Kiểm tra tier:
GET /user-tier?wallet=... - Xác minh các công cụ chưa đáo hạn:
GET /instruments
Hành động:
- Nếu là vấn đề ký quỹ: Giảm quy mô vị thế hoặc bổ sung tài sản thế chấp
- Nếu là vấn đề tier: Nâng cấp lên tier2 hoặc đảm bảo các lệnh bán được cover
- Nếu đã đáo hạn: Sử dụng các công cụ khác
Thiếu Thông báo Khớp lệnh
Triệu chứng: 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 minh việc đă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 - Poll endpoint REST để lấy các lệnh khớp bị bỏ lỡ
- Đối chiếu các lệnh khớp với trạng thái lệnh
Trạng thái Lệnh Không Đồng bộ
Triệu chứng: 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 minh cache lệnh đã được cập nhật
- So sánh trạng thái lệnh giữa REST và WS
Hành động:
- Poll REST sau khi WS kết nối lại để cập nhật
- Sử dụng REST làm nguồn dữ liệu chuẩn (source of truth) để đối chiếu
Vấn đề MMP
MMP Kích hoạt Quá Thường xuyên
Triệu chứng: Nhiều lệnh bị hủy bởi MMP
Điều tra:
- Kiểm tra cấu hình MMP:
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 các 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ổ thời gian - Giảm tần suất báo giá
MMP Không Kích hoạt
Triệu chứng: Các lệnh khớp vượt quá giới hạn nhưng MMP không kích hoạt
Điều tra:
- Xác minh MMP đã được bật:
GET /mmp-config?wallet=...¤cy=... - Kiểm tra
mmp_enabled=truetrên các lệnh - Xác minh loại tiền tệ khớp với tài sản cơ sở của lệnh
Hành động:
- Bật MMP trên các lệnh:
mmp_enabled=true - Cấu hình MMP cho đúng loại tiền tệ
- Điều chỉnh giới hạn nếu cần
Vấn đề Ký quỹ
Ký quỹ Không đủ
Triệu chứng: 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 thất bại
Hành động:
- Giảm quy mô vị thế
- Bổ sung tài sản thế chấp (khi luồng nạp tiền được triển khai)
- Đóng các 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
Triệu chứng: Lệnh bị từ chối với thông báo "No spot price available"
Điều tra:
- Kiểm tra kết nối feed giá spot của Hyperliquid
- Xác minh mã tài sản cơ sở là chính xác
- Kiểm tra xem feed giá spot có đang hoạt động không
Hành động:
- Chờ feed giá spot khôi phục
- Sử dụng tài sản cơ sở khác nếu có
- Liên hệ bộ phận hỗ trợ nếu vấn đề vẫn tiếp diễn
Vấn đề Hệ thống
Độ trễ Cao
Triệu chứng: 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 request
- Triển khai giới hạn tần suất request (throttling)
- Liên hệ bộ phận hỗ trợ nếu vấn đề vẫn tiếp diễn
Giới hạn Tần suất (Rate Limiting)
Triệu chứng: Các request bị từ chối hoặc bị giới hạn
Hiện tại: Giới hạn tần suất được áp dụng theo từng ví. Xem Rate Limits để biết chi tiết.
Hành động:
- Kiểm tra header
Retry-Aftervà chờ trước khi thử lại - Giám sát
X-RateLimit-Remainingđể tránh chạm giới hạn - Sử dụng các bulk endpoint khi có thể
Quy trình Khẩn cấp
Kill Switch
Hành động ngay lập tức:
- Hủy tất cả các lệnh:
DELETE /bulk_orderhoặcDELETE /bulk_order_cloid - Ngắt kết nối WebSocket
- Dừng hệ thống báo giá
Khôi phục:
- Xác minh tất cả cá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 vấn đề được giải quyết
Đối chiếu Dữ liệu
Sau sự cố:
- Poll các endpoint REST để lấy trạng thái hiện tại
- Đối chiếu các lệnh:
GET /orders?wallet=... - Đối chiếu các lệnh khớp:
GET /fills?wallet=... - Đối chiếu danh mục:
GET /portfolio?wallet=... - Tiếp tục các subscription WebSocket
Báo cáo Leo thang
Nếu vấn đề vẫn tiếp diễn:
- Xem lại các vấn đề đã biết và các thông báo staging được cung cấp cùng quyền truy cập
- Kiểm tra Runbooks để biết các quy trình chi tiết
- Liên hệ bộ phận hỗ trợ với các thông tin:
- Địa chỉ ví
- Thông báo lỗi
- Dấu thời gian (timestamps)
- Các bước tái hiện vấn đề