BÁO CÁO KỸ THUẬT

Phân tích Hiệu năng &
Đề xuất Hạ tầng Meey Map

Giải quyết triệt để vấn đề Timeout và gián đoạn dịch vụ

Trần Văn Thuận
Tech Lead Meey Map

Thực trạng: Trải nghiệm người dùng

Hệ thống đang gặp sự cố nghiêm trọng về thời gian phản hồi, ảnh hưởng trực tiếp đến khả năng sử dụng của khách hàng.

49s
Độ trễ API

Thời gian phản hồi trung bình của API check-user-quota

499
Lỗi Client Closed

Khách hàng hủy kết nối (tắt tab) do chờ đợi quá lâu

28
cURL Error

Lỗi kết nối nội bộ (Timeout) giữa các services

2

Lỗi kết nối nội bộ (Timeout) giữa các services

Cloud architecture diagram
5

Query chậm

Cloud architecture diagram
5

Tác vụ job nặng chiếm hệ thống

Cloud architecture diagram
5

Nguyên nhân #1: Truy vấn CSDL

Vấn đề "Slow Query"

Một tác vụ nền (Job) đang thực hiện câu lệnh quét toàn bộ bảng dữ liệu lớn (Full Table Scan) mỗi lần chạy.

SELECT DISTINCT "city_id"
FROM "meeymapv3"."parcel_boundaries"
-- Execution Time: 55,537 ms

Hậu quả: Database bị khóa tài nguyên trong gần 1 phút, chặn đứng mọi truy vấn khác từ người dùng.

Database bottleneck illustration
3

Nguyên nhân #2: Xung đột Tài nguyên

Cạnh tranh trên cùng một Server

  • Môi trường hiện tại: API (phục vụ User) và Worker (chạy Job nặng) đang nằm chung trên 1 Pod (4 Core / 4GB RAM).
  • Vấn đề phát sinh:
    • Job UpdateLocation chiếm dụng CPU/RAM.
    • Phân tích Job 'UpdateLocationStatusJob': Thời gian chạy trung bình: > 3 phút (190 giây)/lần.
      Tác vụ: Thực hiện câu lệnh SELECT DISTINCT nặng trên tập dữ liệu lớn.
      Hệ quả: Job chiếm hết CPU/IO -> Request của khách hàng bị đẩy vào hàng đợi (Queue) gây timeout.
    • Liveness/Readiness Probe Failed (6 lần): Server quá bận xử lý Job, không phản hồi Healthcheck trong 5s
    • Điều này khiến Kubernetes tự động ngắt kết nối hoặc Pod bị Restart tự động => Gián đoạn kết nối.
    • Vấn đề Requests (1GB) vs Limits (4GB): Hệ thống bị 'thắt cổ chai' (Throttling) khi cần RAM đột biến cho GIS.
4

Dấu hiệu cảnh báo từ Kubernetes

Cloud architecture diagram
5

Giải pháp Đề xuất

1. Tách biệt Hạ tầng

Tách riêng Server chạy API và Server chạy Worker. Job chạy chậm sẽ không còn ảnh hưởng đến User.

2. Tối ưu Resource

Nâng mức cam kết tài nguyên để đảm bảo độ ổn định.

RAM: 32GB-64GB - CPU: 16-24 core

Nginx: worker_process: 16-24 luồng: worker_connections = 4096

Queue wokers: 20-30 workers

3. Refactor Code

Loại bỏ SELECT DISTINCT, sử dụng cache cho danh sách Tỉnh/Thành phố.

Cloud architecture diagram
5

Thanks

Cảm ơn Quý vị đã lắng nghe.

Phòng Kỹ thuật Meey Map