KB-843B

Báo cáo điều tra log 48h — Agent Data / Claude Desktop

12 min read Revision 1
reportscodexhistorical-sync

Báo cáo điều tra log 48h — Agent Data / Claude Desktop

Ngày: 2026-04-14
Agent: Codex
Mode: Read-only investigation

0. 3 câu Tuyên ngôn

  • Vĩnh viễn? Báo cáo này không fix triệu chứng bằng tay trên VPS. Kết luận ưu tiên nguyên nhân gốc có thể lặp lại: discovery path sai/lệch, background job lỗi định kỳ, DB error storm, security scan noise.
  • Nhầm được không? Mọi nhận định dưới đây đều bám log thật 48h, trạng thái container thật, resource thật và probe thật. Chỗ nào chưa đủ log timing sẽ ghi rõ thiếu bằng chứng.
  • 100% tự động? Nếu muốn chẩn đoán dứt điểm về “chậm”, hệ thống phải bổ sung access log có request_time/upstream_response_time cho /api/mcp, /api/kb/list, search endpoints và app-level timing cho MCP/search handlers.

1. Phạm vi kiểm tra

  • Thời gian kiểm tra thực tế:
    • Cửa sổ log: --since 48h tính tại thời điểm bắt đầu điều tra khoảng 2026-04-14 04:39:48 +02
    • Tương đương khoảng 2026-04-12 02:39 UTC2026-04-14 02:47 UTC
  • Nguồn log:
    • docker logs --since 48h incomex-agent-data
    • docker logs --since 48h incomex-nginx
    • docker logs --since 48h incomex-directus
    • docker logs --since 48h postgres
    • docker logs --since 48h incomex-qdrant
    • journalctl --since "48 hours ago" -k --no-pager
  • Service/container đã kiểm tra:
    • incomex-agent-data
    • incomex-nginx
    • incomex-directus
    • postgres
    • incomex-qdrant
    • incomex-nuxt
  • Runtime/resource đã kiểm tra:
    • docker ps, docker inspect, docker stats --no-stream
    • free -m, df -h
    • /proc/pressure/{cpu,memory,io}
    • Probe HTTP thực tế qua public HTTPS và direct container

2. Tóm tắt điều hành

  • Có/không có dấu hiệu chậm:một phần. Có bằng chứng rõ cho overhead lúc khởi tạo kết nối MCP/discovery, nhưng không có bằng chứng đủ mạnh cho việc Agent Data server-side bị chậm liên tục trong 48h.
  • Có/không có lỗi đáng chú ý: Có. Nổi bật nhất là lỗi nền lặp lại ở Directus/Postgres và 1 đợt scan bên ngoài tạo rất nhiều 5xx nhiễu.
  • 3 phát hiện quan trọng nhất:
    1. POST /api/mcpGET /api/health ổn định: nginx ghi 4038 lần POST /api/mcp200, 1 lần 204, 0 lần 5xx; 10696 lần GET /api/health200, 0 lần 5xx.
    2. discovery sai path trước MCP: các request /.well-known/oauth-authorization-server* đi nhầm vào Nuxt, trả 404 body rất lớn (~130 KB đến ~239 KB) và mất khoảng 240–257 ms mỗi request; đúng /api/mcp init chỉ mất khoảng 13–23 ms public hoặc 33 ms direct.
    3. Có lỗi nền thực sự nhưng không trỏ thẳng vào MCP path: 72 lỗi Postgres/46 lỗi Directus về meta_catalog bị security guard chặn, 40 deadlock DB, 922 lỗi invalid input syntax for type bigint: "undefined", 9 lỗi Agent Data Vector count failed: Server disconnected without sending a response.

3. Bằng chứng chính

  • [2026-04-14 02:27:03 UTC] GET /.well-known/oauth-authorization-server/api/mcp -> 404, body 239545 bytes, nginx warn buffered to a temporary file
  • [2026-04-14 02:27:09 UTC] GET /.well-known/oauth-authorization-server -> 404, body 130010 bytes, nginx warn buffered to a temporary file
  • [2026-04-14 02:27:10 UTC] ngay sau đó client mới vào POST /api/mcp -> 200, 204, 200
  • [live probe 2026-04-14] https://vps.incomexsaigoncorp.vn/.well-known/oauth-authorization-server/api/mcp -> 404, 240.4 ms, 239545 bytes
  • [live probe 2026-04-14] https://vps.incomexsaigoncorp.vn/.well-known/oauth-authorization-server -> 404, 257.1 ms, 239537 bytes
  • [live probe 2026-04-14] https://vps.incomexsaigoncorp.vn/api/mcp/.well-known/oauth-authorization-server -> 404, 13.0 ms, 22 bytes
  • [live probe 2026-04-14] external MCP init -> 200, 22.8 / 13.3 / 13.4 ms
  • [live probe 2026-04-14] direct container MCP init -> 200, 33.0 ms
  • [runtime 2026-04-14] incomex-agent-data restart=0, health=healthy, RAM hiện tại 1.096 GiB / 2.5 GiB, CPU hiện tại 0.93%
  • [runtime 2026-04-14] không có OOM trong kernel journal 48h, disk / dùng 43%, swap 0, PSI memory/io gần như 0
  • [2026-04-13 23:00:04 UTC] Agent Data log: ERROR - Vector count failed: Server disconnected without sending a response.
  • [2026-04-13 18:01:11 UTC] Postgres/Directus: Direct UPDATE of meta_catalog counting fields is blocked... + PATCH /items/meta_catalog/... 500
  • [48h aggregate] nginx /api/* 5xx top IP = 148.113.214.89 với 3977 lần, chủ yếu scan/injection vào /api/directus/*/api/registry/matrix

4. Phân tích vấn đề Claude Desktop chậm

  • Triệu chứng:
    • User báo Claude Desktop thao tác với Agent Data chậm.
    • Trong log 48h, có một phiên client thật (IP 123.24.183.10) đi qua chuỗi discovery trước khi vào MCP.
  • Bằng chứng:
    • Với client đó, thứ tự request là:
      • GET /.well-known/oauth-authorization-server/api/mcp -> 404 239545 bytes
      • GET /api/mcp/.well-known/oauth-authorization-server -> 404 22 bytes
      • GET /.well-known/oauth-authorization-server -> 404 130010 bytes
      • sau đó mới POST /api/mcp -> 200/204/200
    • Live probe hiện tại lặp lại đúng pattern:
      • 2 wrong-path 404 lớn mất khoảng 240–257 ms mỗi cái
      • MCP init đúng chỉ mất khoảng 13–23 ms qua public HTTPS
    • Trong 48h:
      • nginx POST /api/mcp: 4038 x 200, 1 x 204, 0 x 5xx
      • nginx GET /api/health: 10696 x 200, 0 x 5xx
      • agent-data POST /mcp: 4039 x 200, 1 x 204, 1 x 401
    • Runtime hiện tại ổn:
      • container không restart
      • không OOM
      • CPU/RAM/disk/I/O không có áp lực bất thường
  • Nghi ngờ nguyên nhân:
    • Nguyên nhân gần có khả năng nhất: chậm ở giai đoạn client-side / connection setup / discovery, không phải do Agent Data service đang nghẽn hoặc crash. Cụ thể, client thử sai discovery path và nhận 404 body quá lớn từ Nuxt trước khi vào MCP thật.
    • Nguyên nhân phụ có thể góp phần nhỏ: public HTTPS path có overhead cỡ ~280–370 ms cho /api/health~300–450 ms cho /api/kb/list (payload ~200 KB), nhưng đây chưa phải mức “hệ thống bị nghẽn”.
    • Chưa đủ bằng chứng để kết luận: không có request_time/upstream_response_time trong nginx access log và không có app-level timing cho search/query MCP, nên chưa chứng minh được lịch sử “query search thật” có chậm hay không.
  • Mức độ chắc chắn: MEDIUM

5. Các lỗi khác phát hiện được

Lỗi 1

  • Mô tả: meta_catalog bị background update/flow chạm security guard, gây lỗi DB và HTTP 500 lặp lại theo chu kỳ.
  • Bằng chứng:
    • Postgres: 72 lần Direct UPDATE of meta_catalog counting fields is blocked...
    • Directus: 46 lần PATCH /items/meta_catalog/<id> 500
    • Phân bố theo chu kỳ gần rõ: khoảng 00:00, 06:00, 12:00, 18:00
    • Đồng thời có 641 lần [WATCHDOG] Update on meta_catalog641 lần [DOT-REG] Flow triggered: meta_catalog.items.update on meta_catalog
  • Ảnh hưởng: tạo noise lớn trong log, có thể làm các tác vụ metadata/integrity bị fail từng đợt; chưa có bằng chứng kéo chậm api/mcp
  • Mức độ nghiêm trọng: MEDIUM

Lỗi 2

  • Mô tả: Postgres có error storm invalid input syntax for type bigint: "undefined"
  • Bằng chứng:
    • Tổng 922 lỗi trong 48h
    • Riêng 2026-04-12 21:00 UTC733 lỗi
  • Ảnh hưởng: có khả năng là bug input validation/query builder ở tầng app; tạo tải và nhiễu đáng kể cho DB/log
  • Mức độ nghiêm trọng: MEDIUM

Lỗi 3

  • Mô tả: DB deadlock lặp lại
  • Bằng chứng:
    • Tổng 40 lần deadlock detected
    • Phân bố rải từ 2026-04-12 đến 2026-04-14, không phải một lần đơn lẻ
  • Ảnh hưởng: có thể làm một số transaction nền fail/retry; chưa có bằng chứng đánh vào MCP path
  • Mức độ nghiêm trọng: MEDIUM

Lỗi 4

  • Mô tả: Agent Data background/vector count lỗi ngắt kết nối
  • Bằng chứng:
    • 9 lần Vector count failed: Server disconnected without sending a response.
    • Mốc thấy rõ: 2026-04-12 06:19:56, 09:32:57; 2026-04-13 00:00:03, 00:53:58, 01:15:58, 01:47:58, 02:15:58, 10:07:59, 23:00:04 UTC
    • Qdrant container vẫn healthy, không có WARN/ERROR tương ứng trong 48h
  • Ảnh hưởng: khả năng cao ảnh hưởng tới tác vụ đếm vector/monitoring hơn là request MCP chính; cần điều tra code path gọi vector count
  • Mức độ nghiêm trọng: LOW-MEDIUM

Lỗi 5

  • Mô tả: 5xx /api/* rất nhiều nhưng gần như toàn bộ là từ external scan độc hại, không phải client MCP thật
  • Bằng chứng:
    • nginx /api/* 5xx top IP: 148.113.214.89 với 3977 lần
    • route top: /api/directus/items/knowledge_documents, /api/directus/items/workflows, /api/directus/items/task_comments, /api/registry/matrix...
    • payload/referrer/user-agent cho thấy pattern scan/injection (PG_SLEEP, DBMS_PIPE, random probes)
  • Ảnh hưởng: tăng noise, che mất lỗi thật, có thể làm dashboard 5xx nhìn xấu; không có bằng chứng trực tiếp gây chậm Claude Desktop vào /api/mcp
  • Mức độ nghiêm trọng: MEDIUM

Lỗi 6

  • Mô tả: discovery sai path trả 404 body lớn từ Nuxt
  • Bằng chứng:
    • /.well-known/oauth-authorization-server/api/mcp thấy 2 lần trong 48h
    • /.well-known/oauth-authorization-server thấy 3 lần
    • /api/mcp/.well-known/oauth-authorization-server thấy 2 lần
    • live probe: 404 sai path mất 240–257 ms và trả ~239 KB
  • Ảnh hưởng: gây chậm khởi tạo session MCP/Claude Desktop theo từng phiên; đây là lỗi gần nhất liên quan trực tiếp đến cảm giác “connect chậm”
  • Mức độ nghiêm trọng: MEDIUM

6. Kết luận gốc rễ

  • Nguyên nhân có khả năng cao nhất: không có bằng chứng cho thấy Agent Data server bị chậm liên tục ở tầng CPU/RAM/disk/container/network nội bộ. Dấu hiệu mạnh nhất hiện có là client MCP/Claude Desktop phải đi qua chuỗi OAuth discovery sai path, nhận 404 lớn từ Nuxt rồi mới vào /api/mcp, tạo overhead kết nối đầu phiên.
  • Nguyên nhân phụ nếu có:
    • overhead public HTTPS/TLS mức vài trăm ms
    • /api/kb/list payload lớn ~200 KB, nginx đôi lúc phải buffer ra file tạm
    • background errors ở Directus/Postgres làm hệ thống “ồn” và có thể gây nhiễu/gián đoạn tác vụ nền, nhưng chưa có link mạnh tới MCP path
  • Điểm còn thiếu bằng chứng:
    • không có timing lịch sử cho từng request MCP/search
    • không có log upstream_response_time
    • không có trace để nối “request Claude Desktop cụ thể” sang “query Agent Data cụ thể”

7. Khuyến nghị

  • Cần làm ngay:
    • Sửa discovery/404 handling cho /.well-known/oauth-authorization-server*
    • Trả 404 nhỏ gọn hoặc route đúng về MCP metadata thay vì để Nuxt trả HTML lớn
    • Bổ sung access log có request_timeupstream_response_time cho nginx trên /api/mcp, /api/kb/list, /api/search*
    • Điều tra flow/job đang ghi trực tiếp vào meta_catalog để dừng chu kỳ PATCH 500
    • Điều tra nguồn phát sinh invalid bigint "undefined" vì số lượng lỗi quá lớn
  • Nên theo dõi:
    • deadlock Postgres theo giờ
    • Vector count failed trong Agent Data
    • tần suất api/kb/list và size payload nếu dùng bởi client thật
    • scan/external abuse vào /api/directus/*/api/registry/*
  • Chưa nên kết luận gì vội:
    • chưa thể kết luận semantic search/query của Agent Data chậm trong 48h
    • chưa thể kết luận Qdrant là thủ phạm vì Qdrant log sạch, health tốt và chưa có trace tương ứng

8. Process Checklist

  • Đọc skill .claude/skills/incomex-rules.md
  • Đọc SSOT qua search_knowledge("operating rules SSOT")
  • Đọc hiến pháp qua search_knowledge("hiến pháp v4.0 constitution")
  • Đọc luật/báo cáo liên quan qua search_knowledge(...)
  • Xác định nguồn log, service, container
  • Thu thập evidence 48h
  • Kiểm tra runtime/resource thật
  • Kết luận theo mức độ chắc chắn