Full-Node
增加全節點的最大傳出連接數
如果傳入連接被禁用,最大全中繼連接數為 8:src/net.h#L64,最大僅塊中繼連接數為 2:src/net.h#L68
這些是如何決定的,使用者如何更改這些值?
它在doc/reduce-memory.md中提到,每個連接都會佔用一些記憶體。如果使用者沒問題怎麼辦?
更改
MAX_OUTBOUND_FULL_RELAY_CONNECTIONS
為 32 或更高版本有助於加快同步速度嗎?或者是改善同步dbcache
的par
唯一選擇嗎?我嘗試將其更改為 40,但額外的節點不斷斷開連接。我在日誌src/net_processing.cpp#L4581中看到這一行,但不確定它是否與 DoS 保護或其他有關。
更新 1:我在這裡評論了 if 語句:src/net_processing.cpp#L4577編譯成功並且測試通過。我可以看到超過 15 個對等方已連接,但幾分鐘後同步幾乎暫停,什麼也沒發生。在日誌中找不到任何有用的東西。
問題解決了。使用以下程式碼更改,我能夠獲得 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=16
在bitcoin.conf
. 也嘗試了 20 並且效果很好。