如果 Tor 中继所用内存超过预期,以下为一些降低内存占用的技巧:
- 如果使用 Linux,可能在 glibc 的 malloc 实施中遇到内存碎片缺陷。
这就是说,当 Tor 将内存释放回系统后,这些内存将碎片化,很难再利用。
Tor 的 tarball 自带 OpenBSD 的 malloc 实施,这个方法没有那么多的碎片故障(但代价是更高的 CPU 负载)。
可以要求 Tor 使用 malloc 实施:
./configure --enable-openbsd-malloc
。
- 如果你正在运行一个高速中继,这意味着许多 TLS 连接处于打开状态,你可能分配大量内存到 OpenSSL 内部缓冲区(每个数据包 38KB+)。
我们已经给 OpenSSL 打过补丁,来更激进地释放未使用的缓冲区内存。
如果升级到 OpenSSL 1.0.0 或更新版本,Tor 的构建进程将自动识别并使用该功能。
- 如果仍然无法承担内存负载,可考虑减少中继播放的带宽总额。
播放较少的带宽意味着吸引的用户较少,这样你的中继不会变的较大。
请查阅 man 页面中的
MaxAdvertisedBandwidth
选项。
综上所述,高速 Tor 中继使用许多内容。高速出口中继占用 500-1000 MB内存并非不常见。