Tor リレーが必要以上にメモリを使用している場合は、以下の方法でメモリ使用量を減らすことができます。
- Linuxをお使いの場合、glibcのmalloc実装でメモリの断片化バグに遭遇しているのかもしれません。
つまり、Tor がメモリをシステムに解放するとき、メモリの断片は再利用しにくいように断片化されます。
Tor tarballにはOpenBSDのmalloc実装が含まれており、フラグメンテーションのバグはそれほど多くありません(ただし、その代償としてCPU負荷が高くなります)。
代わりにこの malloc 実装を使うよう Tor に指示できます。
./configure --enable-openbsd-malloc
- 高速リレーを実行している場合、つまり多くのTLS接続を開いている場合は、OpenSSLの内部バッファ(ソケットあたり38KB以上)に大量のメモリが失われている可能性があります。
未使用のバッファメモリをより積極的に解放するようにOpenSSLにパッチを当てました。
OpenSSL 1.0.0以降に更新すると、Tor のビルドプロセスが自動的にこの機能を認識して使用します。
- それでもメモリ負荷を処理できない場合は、リレーが宣伝する帯域幅の量を減らすことをご検討ください。
宣伝する帯域幅が少ないということは、引き付けるユーザーを減らせることを意味するので、リレーはそれほど大きくならないはずです。
マニュアルページの
MaxAdvertisedBandwidth
オプションをご覧ください。
とはいえ、高速な Tor リレーは多くの RAM を使用します。高速な出口リレーが 500~1000 MB のメモリを使用することは珍しくありません。