RSS ジュリア・エヴァンス
フォロー
Mess With DNS での IP アドレスの検索に使用されるメモリーを減らす
Mess With DNS の作者は、プログラムがメモリー不足でOOMが殺される問題に遭遇し、バックアップスクリプトに問題が生じるようになった。この問題を解決するために、作者は Mess With DNS がメモリーを少なく使うようにすることを決めた。このプログラムは、IPアドレスのデータベースをメモリーにロードし、約117MBのメモリーを使用していた。作者は、メモリー使用量を削減するために3つの異なるアプローチを試みました。第一のアプローチは、SQLite を使用してデータをディスク上に保存することで、初期のメモリーの目標を達成することができましたが、IPv6アドレスの保存と、元のバイナリーサーチよりも500倍遅いという問題がありました。第二のアプローチは、trie を使用することで、メモリーの使用量が増加し、元のバイナリーサーチよりも遅くなりました。第三のアプローチは、Name と Country フィールドの重複を削除し、メモリーの使用量を117MBから65MBに減らすことで、netip.Addr ではなく net.IP を使用することで、メモリーの使用量をさらに20MB削減し、合計で46MBにまで減らすことができました。作者は、合計で70MBのメモリーを節約することができました。