diff --git a/ansible/roles/bitcoin_knots/defaults/main.yml b/ansible/roles/bitcoin_knots/defaults/main.yml index 01a352d..cce3850 100644 --- a/ansible/roles/bitcoin_knots/defaults/main.yml +++ b/ansible/roles/bitcoin_knots/defaults/main.yml @@ -69,11 +69,17 @@ healthcheck_push_token: "" bitcoin_logfile: "{{ bitcoin_data_dir }}/debug.log" # --- dbcache ---------------------------------------------------------------- -# Computed as 90% of RAM unless this is set. The live node was hand-tuned to -# 200 MB; the calculation would have produced 3528. As with fulcrum, note that +# Computed as 90% of RAM unless this is set. As with fulcrum, note that # set_fact outranks role defaults, so the CALCULATION has to honour this - a # value pinned only in defaults/ is silently ignored. -bitcoin_dbcache_mb_override: 200 +# +# 1200, raised from a hand-tuned 200 on 2026-10-18. At 200 MB almost no UTXO +# lookup hit memory: the P2P thread alone read ~4 MB/s off the saturated HDD +# mirror validating relayed transactions, and block validation took a median +# 11 s, p90 103 s, max 344 s - long enough for RPC to stall and the health +# probe to fail. 1200 is what fits in the 4 GB VM (bitcoind ~1.5 GB RSS at +# 200, mempool ~3 MB in practice). Raising the VM to 6 GB would allow ~3000. +bitcoin_dbcache_mb_override: 1200 # --- DATUM Gateway ---------------------------------------------------------- # This node feeds block templates to datum_gateway on knots-box. These settings