Full-Node

增加全節點的最大傳出連接數

  • April 30, 2021

如果傳入連接被禁用,最大全中繼連接數為 8src/net.h#L64最大僅塊中繼連接數為 2src/net.h#L68

這些是如何決定的,使用者如何更改這些值?

它在doc/reduce-memory.md中提到,每個連接都會佔用一些記憶體。如果使用者沒問題怎麼辦?

更改MAX_OUTBOUND_FULL_RELAY_CONNECTIONS為 32 或更高版本有助於加快同步速度嗎?或者是改善同步dbcachepar唯一選擇嗎?

我嘗試將其更改為 40,但額外的節點不斷斷開連接。我在日誌src/net_processing.cpp#L4581中看到這一行,但不確定它是否與 DoS 保護或其他有關。

同行

更新 1:我在這裡評論了 if 語句:src/net_processing.cpp#L4577編譯成功並且測試通過。我可以看到超過 15 個對等方已連接,但幾分鐘後同步幾乎暫停,什麼也沒發生。在日誌中找不到任何有用的東西。

對等同步

傳出全繼電器 16

問題解決了。使用以下程式碼更改,我能夠獲得 16 個穩定的傳出完整中繼連接:

在src/init.cpp中添加以下行

argsman.AddArg("-maxoutfullrelay=<n>", strprintf("Maintain at most <n> outbound full relay connections to peers (default: %u)", MAX_OUTBOUND_FULL_RELAY_CONNECTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);

int nMaxOutboundFullRelay;

nMaxOutboundFullRelay = args.GetArg("-maxoutfullrelay", MAX_OUTBOUND_FULL_RELAY_CONNECTIONS);
nMaxOutboundFullRelay = std::max(nMaxOutboundFullRelay, 0);

connOptions.m_max_outbound_full_relay = std::min(nMaxOutboundFullRelay, connOptions.nMaxConnections);

maxoutfullrelay=16bitcoin.conf. 也嘗試了 20 並且效果很好。

引用自:https://bitcoin.stackexchange.com/questions/103753