比特币守护进程在 35 个连接上消耗了超过 581Mb 的内存

比特币守护进程在 35 个连接上消耗了超过 581Mb 的内存

在 35 个连接的情况下,我的 bitcoind 消耗了 581Mb 的内存,这超过了 VPS 中总内存(总共 1024)的一半,而且我还需要内存来运行服务器上的其他服务,例如 apache2 和 mysql。我是否可以采取任何措施将 bitcoind 使用的资源限制为大约 256Mb 的整数,而不会严重限制 bitcoind 正常运行的能力?我想我可以在 bitcoin.conf 中限制最大入站/出站连接数,但是什么才是合适的限制呢?

答案1

看一眼https://stackoverflow.com/questions/4983120/limit-memory-usage-for-a-single-linux-process

我认为您需要使用 softlimit 作为包装程序。如果不进行测试,我不知道它是否会强制交换或直接将其杀死。

答案2

您可以调整 mysql 和 apache 以使用比其默认值少得多的 RAM,但这是一个不同的主题,并且显然它可能不是一个选项(基于)您的流量等......

...比特币

有趣的是,它连接到了如此多的节点,上次我查看时,默认情况下它只连接了大约 8 个节点

我建议将其添加到您的 ~/.bitcoin/bitcoin.conf 中,至少暂时限制会话:

最大连接数=8

(如果您想更快地同步整个区块链(从头开始),请使用更多,然后减少它,尽管我不确定这是否会影响它的足迹。)

我目前正在运行 80600 版本,8 个连接,其运行速度(RSS)约为 320M

我认为 bitcoind 总是需要大量的内存或 RAM......(https://github.com/bitcoin/bitcoin/issues/2485)...

我很想知道如何减少内存占用。我会自己开始研究这个问题。(我在我托管的服务器上运行了超过 10 个硬币,并且不得不将其内存增加到 4g,因为它到处都在交换,所以知道这一点会很好)

目前我建议对 mysqld 和 apache 进行一些调整。有很多选择。对于 mysqld,请查看 mysqltuner.pl 并开始增加数字(这方面有很多教程,但我建议每次只做小改动)

..这是我在我的其中一台虚拟机(debian 6)上运行的一个相当小的 mysqld,它现在的占用空间大约为 128Mb(但可能高达 164Mb)..

例子:

[mysqld]
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
query_cache_limit   = 1M
query_cache_size        = 16M

[mysql]
[isamchk]
key_buffer      = 8M
sort_buffer_size = 8M

^^(如果 mysqld 可以在树莓派上运行,这个数字还可以进一步减少)

...如果您遇到稳定性问题,我建议至少创建一个交换文件并激活它。

根据所使用的虚拟化技术,交换文件可能不是选项,但我认为它比崩溃要好。

答案3

bitcoind 在下载区块链时会使用大量内存。查看以下步骤,了解如何在 Ubuntu 上正确设置交换空间:

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

此外,你可以查看区块链的种子下载。只要你信任该文件,这可以帮助加快下载区块链的时间。

http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/bootstrap.dat.torrent/download

相关内容