我が家の宅内要塞(hidetti.net)のコア、HP ProLiant MicroServer N54L上で稼働するTrueNAS SCALE環境において、深夜4時から謎のCPU負荷上昇とAdGuard HomeへのDNSクエリ爆撃が発生した。
結論から言うと、原因はImmichのMachine Learningコンテナが要求するCPU命令セット(AVX)の不整合による即死と、それに伴う名前解決の無限ループであった。非力なTurion II Neo CPU(2コア/16GB RAM枠)を労りつつ、システムに再び「深呼吸」をさせるための美しい撤退戦をここに残す。
1. 発生した現象:AdGuardのログを埋め尽くす大量のクエリ#
今朝、システムモニターを確認すると、通常1〜2%で推移しているはずのN54LのCPU使用率(Load Average)のベースラインが一段跳ね上がっていた。 同時に、上流のDNSキャッシュサーバーであるAdGuard Homeのクエリログを確認したところ、以下のローカルドメインへの異常な超高速リトライクエリ(秒間数十回)が記録されていた。
machine-learningmachine-learning.local
過去7日間の「最も問い合せされたドメイン」のトップに急浮上するほどの大出血状態であった。
2. 原因:AVX命令セット非互換によるコンテナ即死#
TrueNAS SCALEの「Apps」画面からImmichのWorkloads(ワークロード)を確認したところ、インフラの歪みが露わになった。
server - 動作中
pgvecto - 動作中
machine-learning - Exited <-- これが原因!
redis - 動作中
permissions - Exited根本原因のメカニズム#
- Turion II Neoの限界 (AVX未実装): Immichが近年採用している機械学習ライブラリ(ONNX Runtime / PyTorch等)は、CPUの拡張命令セットである AVX / AVX2 を要求する。しかし、名機N54Lにはこれが物理的に実装されていない。そのため、コンテナ内のプロセスがログ(stdout)を吐き出す前の超初期段階で
Illegal instructionにより即死(Exited)していた。 - リトライループの発生: メインの
serverコンテナは、死んでいるmachine-learningコンテナに対して「おい、応答してくれ!」と名前解決を試み続ける。これがコンテナ内部のネットワークを突き抜け、外部のAdGuard Homeまで漏れ出て無限リトライループ(DNS暴走)を構成していた。
3. 対策:Machine Learningの完全無効化#
メモリ16GB制限(ZFS ARCで8GBをガッチリ死守中)のN54L環境において、顔認識やオブジェクト検出のためにCPUを空振りで100%に張り付かせるのは、インフラ防衛上大きなリスクだ。 万が一、瞬低や停電が発生した際、オムロン BW55T(blazer_usb/ippon)のシャットダウンシーケンス(360秒タイマー)の確真な遂行を脅かしかねない。
NASとしての「写真バックアップ」「アルバム閲覧」という本質機能を最優先し、ML機能を安全に切り離す英断を下した。
TrueNAS SCALEでの最適化手順#
- TrueNASの Apps > Immich > 編集(Edit) を開く。
Enable Machine Learningのチェックボックスを外す(オフにする)。- 画面下部までスクロールし、保存(Save) をクリック。
【結果】 ワークロードから
machine-learningの表記自体が消え去り、「インスタンス 5」のクリーンな布陣へ移行。AdGuard HomeへのDNSクエリはピタッと止まり、Tera Termから確認したhtopのCPU負荷は平熱(1〜2%の静寂)へと戻った。
4. AdGuard Home側でのダメ押し防御設定#
万が一、今後のアップデート等でImmich serverが寝言のようにクエリを飛ばした場合に備え、AdGuard Home側で1ミリ秒でシャットアウトするカスタムフィルターを設定した。
フィルター > カスタムフィルタールール:
||machine-learning^$dnsrewrite=NXDOMAIN;;
||machine-learning.local^$dnsrewrite=NXDOMAIN;;これにより、無駄な外部問い合わせを発生させず、即座に「ドメイン不在(NXDOMAIN)」を返してN54LのCPUサイクルを徹底的に保護する。
5. 今後の展望:顔認識を取り戻すロードマップ#
もし将来的にどうしても顔認識(ソート機能)を完全復活させたい場合、N54L単体に無理をさせず、以下のスマートなアプローチをとる予定だ。
- External Machine Learningの活用: Immichの設計を活かし、重いAI処理だけを別マシンのパワー(GPU搭載のデスクトップPC等)に丸投げする運用。
- Hugging Face超軽量モデルの検証:
Hugging Face Endpoint設定を利用し、AVX命令を要求しないcpu-onlyの超軽量量子化モデル(MobileNetベース等)を週末にじっくり実験する。
限られた16GBのメモリとTurion CPUという制約の中で、システムをパニックに陥らせず安定稼働させる。これこそがセルフホストの醍醐味であり、シニアエンジニアの流儀である。

💬 フィードバック・感想はこちら
この記事へのご意見・ご感想は、X(旧Twitter)でつぶやいていただくか、匿名のフィードバックフォームからお寄せください。