跳轉到

tapioctl check 子命令

tapioctl check 是盤前 / 巡檢 / 故障時的第一站。

用法

tapioctl check <子檢查>

子檢查:pfiles | config | disk | logs | tcpdirect | all

回傳碼:

  • 0 — 通過(含警告級別)
  • 1 — 警告(可開盤但要處理)
  • 2 — 失敗(不能開盤)

各子檢查

pfiles — 期交所產品檔

呼叫 libexec/tapio_check pfiles

驗證 /opt/Tapio/data/taifex/<system_date>/ 下的產品檔:

  • 必要檔案齊全(P08P09P13P14 各 4 個副檔名 .10/.11/.20/.21,共 16 個)
  • P08(商品與時間流程群組定義檔)、P09(契約乘數)格式可解析(Tapio 內建 parser 試讀)

失敗對策

  • 缺檔 → 找交易室重跑 SFTP 下載
  • 格式錯 → 找開發

config — Tapio.toml 可讀

呼叫 libexec/tapio_check config

驗證 /opt/Tapio/etc/Tapio.toml

  • 檔案存在 + 可讀
  • TOML 語法正確
  • 所有必要欄位齊全
  • 值合理(CPU 編號在範圍內、port 數字、IP 格式 等)

失敗對策:找最近改過 Tapio.toml 的人。

disk — 磁碟使用率

檢查目錄列表:

路徑 required?
/opt/Tapio/data/taifex/ required
/opt/Tapio/log/ required
/opt/Tapio/ required
[livesync].watch_dir(讀自 Tapio.toml optional

對每個 mount point 看使用率:

  • ≥ 80% → 警告
  • ≥ 95% → 失敗

失敗對策

  • 立刻清舊 log(find /opt/Tapio/log -maxdepth 1 -type d -mtime +30 -exec rm -rf {} +
  • 或擴容磁碟

logs — daily log 是否在寫

找今天的 daily* log,看 mtime:

  • 最後一行 < 10 分鐘前 → 通過
  • 最後一行 ≥ 10 分鐘前 → 看時段:
    • 盤中(日盤 / 夜盤)→ 失敗(Tapio 可能掛了)
    • 盤前 / 日盤盤後 → 通過(正常無流量)

時段定義(TAIFEX):

時段 時間
日盤 08:45 – 13:45
夜盤 15:00 – 翌日 05:00

失敗對策

  • 盤中失敗 → tapioctl status 看 process 還在不在
  • 不在 → 看 log/$today/stdout/tapio-core.log 找死因
  • 還在但沒寫 log → 可能 hang / deadlock,先 gdb attach 拿 stack 再決定

tcpdirect — Onload / TCPDirect / NIC

檢查項目:

  • tcpdirect RPM 已裝
  • onloadopenonload RPM 已裝
  • /usr/lib64/libonload_zf.so 存在
  • libonload_zf.so 不是 debug build(路徑不含 */zf/debug/*
  • libonload_zf.so owner 是 tcpdirect-* RPM
  • lsmodonloadsfc_char kernel module

失敗對策

  • 缺 RPM → dnf install tcpdirect onload
  • 缺 kmod → 裝 kmod-onloadonload_tool reload
  • debug build → 重 build TCPDirect release

all — 跑全部

tapioctl check all

依序跑 pfiles → config → disk → logs → tcpdirect。每個 section 印小結,最後印總結。

回傳碼為各檢查中的最差(max)。

範例輸出:

== pfiles ==
[通過] pfiles: 期交所產品檔齊全 / 格式正確

== config ==
[通過] config: Tapio.toml 可被 Tapio 讀取

== disk ==
  - /opt/Tapio/data/taifex: 45% 使用中,剩 200 GiB  [通過]
  - /opt/Tapio/log: 82% 使用中,剩 30 GiB  [警告]
  - /opt/Tapio: 45% 使用中,剩 200 GiB  [通過]
[警告] disk: 0 錯誤,1 警告
      → 磁碟使用率 ≥ 80%,排時間清理

== logs ==
[通過] logs: Tapio.121719.txt 活著(2 分鐘前才寫過,現在 日盤 12:23)

== tcpdirect ==
[通過] tcpdirect: RPM 已裝、/usr/lib64/libonload_zf.so 為 release build、kmod 已載入

---
總結: 有警告但可開盤,排時間處理上面提到的項目