20260305 會議記錄

:::info

上次會議待辦

Past events

:::success 要用 Gemini 寫個 FB 貼文推廣 huggingface dataset + 圖 by MrOrz :::

重大事件:伺服器無回應

Post-mortem: Production API Unresponsive Incident (2026-02-13)

事件摘要

事件時間軸 (Timeline)

• 20:06: User 發現 API 無反應。嘗試重啟 url-resolver 與 api 成功,但服務未恢復。嘗試停止 db (Elasticsearch) 失敗,docker stop 與 docker kill command hang 住。 • 20:39: Coding Agent (我) 介入調查。 • 20:40: 診斷發現機器 Load Average 6.11,Elasticsearch process (PID 2443) 呈現 Zombie 狀態且佔用 26.5% CPU。kswapd0 活躍 (Swap Thrashing)。 • 20:41: 嘗試 docker-compose restart db,Timeout 失敗。 • 20:43: 嘗試直接 kill -9 Elasticsearch 的父行程 (containerd-shim)。 結果:Container 重啟了,記憶體釋放 (12GB -> 8.7GB),API Port 恢復連線。 問題:Elasticsearch 因非正常關閉,留下了 write.lock 檔案,導致新啟動的 process 無法寫入資料目錄而啟動失敗。 • 20:50: 嘗試再次停止 db container 以清理 lock files。所有 Docker 指令 (stop, kill, update) 全部卡死無反應。 • 20:54: 判斷 Docker Daemon 本身已故障,嘗試 systemctl restart docker。 結果:指令卡在 deactivating 狀態超過 6 分鐘,無法完成 graceful shutdown。 • 21:00: 執行 sudo reboot 強制重啟整台機器。 • 21:03: 機器重啟完成。SSH 恢復,所有 Docker containers 自動啟動 (Up),Load Average 降至正常值 (1.80)。API 確認恢復正常回應。 • 21:18: 啟用 sysstat (sar) 服務以記錄未來系統資源歷史數據。更新 VPS.md Troubleshooting 指南。

根因分析 (Root Cause Analysis)
後續改善措施 (Action Items)
  1. [已完成] 啟用系統監控: 已在 Production 機器啟用 sysstat,每 10 分鐘記錄一次 CPU、I/O Wait 與記憶體狀態。 未來除錯指令:sar -u -f /var/log/sysstat/sa
  2. [已完成] 更新文件: 更新 VPS.md,加入 sysstat 使用方式與嚴重 Docker 故障的處理流程。
  3. [建議] 持續觀察記憶體與 I/O: 若再次發生類似狀況,檢查 sar 紀錄確認是否為 I/O Wait 飆高。 若記憶體壓力持續,建議將 Elasticsearch Heap Size 從 8GB 調降至 6GB-7GB,預留更多空間給 OS Page Cache。
  4. [建議] 檢查服務資源佔用: 留意 url-resolver (Puppeteer) 是否有記憶體洩漏傾向,可能需要更激進的重啟策略或資源限制。

Github 活動

cofacts/ai

cofacts/takedowns

cofacts/opendata

系統警報

自動刪除帳號

Transcript model

nDX 專案

分三塊

  1. cofacts.ai:chat interface & agent
  2. Website revamp:現在的 cofacts.tw 的改進,以與 AI 整合
  3. 行政項目:找人、準備文件等等

Cofacts.ai

Website revamp

Administrative