多分2016年の12月ぐらいからPOPFileを使っていて、今まで特に運用上の問題はなかった。最近ふと気づいたのだが、どんな単語が登録されているのか見てみたら、文字化けしているものや、意味のない英数字の羅列なども登録されていて、これをきれいにする方法はないかと色々検索してみた。そのものずばりのツールはなかった。ただし、はてなダイアリーに以下のエントリーがあり、この方法でも一部は削除できるだろうと思って試してみた。
popfileを終了し、popfile.dbのコピーを取り、sqlite3のコマンドを実行し、popfileを再起動した。特にエラーもなく立ち上がり、その後メールの分類もしていたので、問題はないだろうと思っていたのだが、いつのまにかメールの分類が止まっており、web UIからアクセスすると、popfileが停止しているようだった。
/var/log/messagesを見ると、
swap_pager_getswapspace(12): failed
のようなウォーニングが大量に出ていて、最終的にはswapが枯渇して、終了していた。これはpopfile.dbが壊れたのかと思い、バックアップしておいたものに差し替えて再起動してみたが、それでも同じようにswapが枯渇する。FreeBSDに移行する前も、移行した後も特に問題なく動いていたと思っていたのだが、いったい何が起きているのはわけがわからなくなってしまった。でもswapinfoでswapの残り状況を見てみると、結構な速度で少なくなっていっている。それで、一分毎にswapinfoとtopで表示される、SIZEとRESの値をファイルに書き出して、調べてみた。
水色のSIZEの縦軸は右側の目盛りになるのだが、2時間ぐらいで61Mから675Mになり、SWAPの使用量はは12%から45%になった。これはどう考えてもperl内でメモリーリークが起きているのでは?だが、なんでpopfile.dbを編集するまで気づかなかったのだろう?ログインして、手動で起動したときだけこの問題が発生しているような気がする。となると、何らかの環境変数が影響しているのだろうか?
それで、環境変数をunsetしながら試してみると
LANG=ja_JP.UTF-8
が設定されていると、モリモリとメモリを消費するように見える。LANGをunsetして起動した場合は、こんな感じになる。
8時間ほど動かしてもさほど上昇しない。ただ、全く上昇しないわけではなく少しは増えているので、やっぱり漏れているのだろうか?よく判らない。