tags: cofacts, —

20260428 會議記錄

:::info

上週待辦

cofacts.ai & Github update

https://github.com/orgs/cofacts/projects/12/views/1

rumors-site

ai

:::info TODO: 把 login user 的 userId 接到 ADK 與 langfuse feedback :::


現在 cofacts.ai 使用上有幾個用起來很令人煩躁的點,好奇使用者這裡有沒有共鳴:

  1. 即使在輸入法組字、選字的狀況,按 enter 就會直接送出
  2. 送出了就停不下來,沒辦法像 gemini 那樣讓人能手動停止並重送指令
  3. 輸入到一半或 agent 還在想的時候不小心按到關閉分頁,沒有跳出確認視窗讓人確認要不要關閉

  1. 如果對最新的回應不滿意,也沒有鉛筆功能讓人重送 prompt (gemini 在最新的使用者訊息旁邊有小鉛筆)
  2. 不能送圖片給 agent 分析
  3. Agent 還在分析的時候,沒辦法傳訊息給 agent 做 steering(這個是 coding agent 比較多有這樣的設計)
    • 使用者可以把執行停下來打 prompt,queued steering 沒必要 [name=mrorz]

我是覺得每個都值得開張票,但應該一起討論一下哪些要先做、還有哪些是開始給更多人用之前一定要修掉的東西(也就是進入 nDX 第二階段的 blocker,理論上 5/1 要進 🫠🫠🫠 )

:::info 結論:除了 5 之外都開票 1, 2, 6 放第一階段,其他放第二階段 :::

rumors-api

:::info 開票拿掉 twitter login –> https://github.com/cofacts/rumors-api/issues/390 :::

opendata

Elasticsearch 記憶體與 Swap 效能優化

AI 爬蟲造成的伺服器負載與成本分析

結論:Block AI Bots 功能對系統負載有顯著保護效果,細節見 Cofacts production weekly report

Discord 伺服器警報 - 2026-04-28 下午 HTTP Timeout

時間:2026-04-28 15:15 – 16:10 台灣時間(07:15 – 08:10 UTC)
影響:cofacts.tw 及 api.cofacts.tw Health Check 觸發 HTTP timeout alert
嚴重性:中(服務降級,非完全中斷)


事件時間軸

時間(台灣) 事件
15:19 Cloudflare Health Check cofacts.tw → Unhealthy (HTTP timeout)
15:15–15:45 Elasticsearch GC 密集觸發,最嚴重時 GC overhead 1.1s/1.7s
15:30 Cloudflare Health Check api.cofacts.tw → Unhealthy
16:03 服務逐漸恢復正常(最後一筆 alert)

根本原因

分散式 SEO Spam 爬蟲針對大量垃圾帳號頁面(/user/[spam-id])發動掃描,並觸發了大量針對垃圾關鍵字的 /search 請求。這兩股針對 Elasticsearch 的沉重負載連鎖爆發,導致 ES 資源耗盡並頻繁觸發 GC,進而拖垮 API 回應速度。

指標 描述
攻擊目標 A /user/ 系列路徑(如 /user/86betws, /user/be5foodsupplement)
攻擊目標 B /search?q=... 包含廣告關鍵字、Temu 商品 ID 或超長法律條文
流量特徵 來源極度分散,跨越全球數十個機房 ASN,規避單一 IP 速率限制
ES 壓力源 針對垃圾 User Profile 的渲染檢索,以及複雜、長字串的搜尋運算

時間 (UTC) Spam 請求數 (/user/*) 524 錯誤數 (Timeout) 事件說明
07:11 7 0 正常狀態
07:12 31 321 Spam 爬取激增,524 開始出現
07:13 20 1,577 ES 開始陷入 GC 停頓
07:18 17 2,116 錯誤達到峰值,Health Check 告警
08:00 9 184 /search 流量翻倍高峰 (1,250次/hr)

惡意搜尋內容範例 (Malicious Search Queries)

已採取行動

封鎖 SEO 爬蟲:在 Cloudflare WAF 將 /user/* 與 /search 針對非 Known Bot 開啟 Managed Challenge。

目前捕捉到的均為 spammer


Cofacts production 週報

報告期間:2026-04-21 ~ 2026-04-28(本週)vs 2026-04-14 ~ 2026-04-21(前一週)


一、GCE 主機狀態(cofacts-prod)

現況快照(2026-04-28 12:28)

項目 數值
Uptime 12 天 10 小時(開機於 4/16)
Load Average 1.04 / 1.22 / 1.37(1/5/15 分鐘)
記憶體(RAM) 21 GB used / 31 GB total(67%)
Swap 734 MB used / 4 GB total(18%,已大幅改善)
磁碟 29 GB / 48 GB(62%)

GCE CPU / 記憶體 / Swap 逐日明細

格式:min | avg | p95 | max

本週(2026-04-21 ~ 2026-04-28)

日期 CPU(%) Mem(%) Swap(%)
04-21 17.8 | 28.5 | 38.3 | 57.0 52.9 | 55.2 | 56.8 | 57.9 93.6 | 98.4 | 100.0 | 100.0 ⚠️
04-22 19.3 | 27.3 | 35.8 | 53.2 52.7 | 56.1 | 66.1 | 66.9 9.2 | 86.9 | 100.0 | 100.0 ⚠️
04-23 17.7 | 27.6 | 38.1 | 55.6 62.8 | 65.6 | 67.3 | 67.9 10.9 | 14.0 | 15.4 | 16.9 ✅
04-24 17.8 | 26.6 | 35.8 | 73.5 62.6 | 65.0 | 66.6 | 67.5 14.8 | 16.3 | 18.2 | 20.8 ✅
04-25 17.2 | 26.5 | 35.8 | 53.3 63.2 | 65.2 | 66.4 | 67.2 17.0 | 17.7 | 18.6 | 20.2 ✅
04-26 14.0 | 26.0 | 37.9 | 45.6 62.9 | 65.2 | 66.5 | 67.1 17.1 | 19.0 | 20.5 | 21.3 ✅
04-27 15.3 | 25.7 | 35.4 | 59.6 61.2 | 65.3 | 66.8 | 67.3 12.4 | 17.4 | 19.1 | 21.0 ✅
04-28 21.4 | 27.8 | 37.7 | 41.7 63.9 | 65.6 | 66.7 | 67.2 17.5 | 17.9 | 18.2 | 19.5 ✅

前一週(2026-04-14 ~ 2026-04-21)

⚠️ Cloud Monitoring 僅保留近 2 週資料,4/14~4/19 的 GCE host-level 指標已無法取回。以下為可取得的資料:

日期 CPU(%) Mem(%) Swap(%)
04-20 16.9 | 49.2 | 65.4 | 86.0 🔴 54.0 | 58.3 | 63.3 | 64.5 84.5 | 96.5 | 99.9 | 100.0 ⚠️
04-21 17.8 | 28.5 | 38.3 | 57.0 52.9 | 55.2 | 56.8 | 57.9 93.6 | 98.4 | 100.0 | 100.0 ⚠️

從製程 CPU 歷史資料(cpu_2026-04-14_2026-04-21)可補充:

  • 4/18:node server.js avg CPU 急升至 52,215 mills(平時 ~3,000),pm2 avg 15,191(平時 ~11,000),dockerd avg 13,674。整體主機 CPU 均值推估約 49–50%。
  • 4/19:node server.js avg 51,176、pm2 avg 15,714,高負載持續。
  • 4/20:node server.js avg 51,679,主機 CPU avg 49.2%(確認數據吻合)。

二、GCE 程序層級 CPU(Top 消耗者)

本週(4/21 ~ 4/28)

程序 Peak CPU (mills) 每日 avg 範圍 穩定度
java(Elasticsearch) ~30,000+ 26,000–35,000 中(std ~700–2,200)
pm2-runtime ~13,558 10,741–12,012 穩定(std ~440–929)
dockerd ~19,027 9,543–11,010 中(4/27 有 spike std 2,235)
node server.js ~16,086(4/21) 6,786–10,001 中(std 1,000–2,728)
node index.js – 2,500–2,950 穩定
Puppeteer Chrome renderer ~18,750(瞬間) 只出現個別小時 瞬間 spike

前一週(4/14 ~ 4/21)

程序 Peak CPU (mills) 特殊觀察
java(ES) ~36,000 (4/18~4/20) 4/18 起急劇上升
node server.js ~22,007(4/20) 4/18 avg 驟升至 52,215(Block AI bots 關閉後)
pm2-runtime ~18,094(4/18) 4/18 起明顯偏高
dockerd ~16,589(4/18) 4/18 起偏高

三、Cloud Run 狀態

所有服務均正常運行(✔)。最近部署:


四、Cloud Run CPU 比較(p50 / p95 / p99)

site-tw(主要服務)

週別 p50(正常) p95(波動上限) p99(尖峰)
前週 4/14~4/21 0.023–0.057 0.193–0.775 0.284–1.012
本週 4/21~4/28 0.069–0.134 0.752–1.011 1.012(整週)

📌 本週 site-tw p50 明顯高於前週(0.07–0.13 vs 0.02–0.06),代表一般流量時段的 CPU 使用率有所上升。

cofacts-ai

週別 p50 p95 p99
前週 4/14~4/21 0.015 0.107–0.217 0.284–0.497
本週 4/21~4/28 0.015 0.120–0.467 0.349–0.511

穩定,無明顯異常。

line-bot-tw(含前週參考值)

前週 p50 約 0.81–0.86(記憶體 metric,非 CPU);本週 CPU p50 約 0.005(idle 狀態),與前週結構相同。


五、Cloud Run 記憶體比較(p50)

服務 前週 p50(GB) 本週 p50(GB) 變化
site-tw 0.810–0.860 0.811–0.860 ➡️ 持平
site-ja 0.810–0.860 0.811–0.886 ➡️ 持平
site-staging-tw/ja/en 0.810–0.913 0.810–0.886 ➡️ 持平
dev-line-bot 0.334–0.344 0.334–0.344 ➡️ 持平
cofacts-ai 0.045 0.045 ➡️ 持平

Cloud Run 記憶體整體穩定,無異常增長。


六、與變更紀錄的交叉比對

變更一:Block AI Bots 設定(4/18 關閉 → 4/23 恢復 Block)

觀察結果:✅ 強力支持你的假設

時間點 主機 CPU avg node server.js CPU 備註
4/14~4/17(Block 開啟) 推估 ~25–30% avg 917–3,548 mills 正常
4/18(Block 關閉) ~49–52%(推估) avg 52,215 mills 🔴 驟升 17x
4/19~4/20 ~49–51% avg ~51,000–51,679 mills 高負載持續
4/21 28.5% avg 10,001 mills 仍偏高(週四)
4/23(Block 恢復) 27.6% avg 6,786 mills 開始下降
4/24~4/28 25.7–27.8% avg 7,914–9,515 mills 穩定恢復正常

結論:


變更二:Elasticsearch Swap 限制(4/23 設定 memswap_limit: 22g)

觀察結果:✅ 效果顯著,立竿見影

時間點 Swap avg Swap max 備註
4/21 98.4% 100% 幾乎全滿(~4 GB used)
4/22 86.9% 100% 仍不穩定(min 9% → max 100%)
4/23(設定後) 14.0% 16.9% 🟢 驟降
4/24~4/28 16–19% 17–21% 穩定維持在低位

現況:目前 Swap 僅使用 734 MB / 4 GB(18%),完全不再有滿載風險。

記憶體使用變化:

結論:


七、整體健康評估

維度 狀態 說明
CPU 🟢 正常 本週 avg 25–28%,4/23 起恢復穩定
RAM 🟡 偏高但安全 65–66%,主因 ES Swap 改善後移至 RAM
Swap 🟢 大幅改善 從 98% 降至 14–19%
磁碟 🟢 正常 62%,無緊迫壓力
Cloud Run 🟢 全部正常 site-tw p50 CPU 本週略高但在合理範圍
site-tw CR CPU 🟡 略高 p50 0.07–0.13(前週 0.02–0.06),值得持續觀察

整體判斷:兩項變更均達到預期效果,系統已回到健康穩定狀態。唯一需要持續觀察的是 site-tw Cloud Run p50 CPU 有些微上升,但尚在可接受範圍內,暫不需要採取行動。