EOSIO / eos

An open source smart contract platform
https://developers.eos.io/manuals/eos
MIT License
11.27k stars 3.6k forks source link

high RAM usage nodeos && mongod #6102

Closed MarcelBlockchain closed 5 years ago

MarcelBlockchain commented 6 years ago

I run a non-producing node with 8GB RAM on Ubuntu 18.04 and 4 CPU cores, no Docker(yet). Overnight mongod crashed, not sure why. I just had to start mongod from the /opt folder again and it worked.
But now the sync process is super slow. It's at 20860100 of 22222260 blocks Example: time per: 562566, size: 1, time: 562566

Mongod takes ~ 150% CPU usage and 41% RAM nodeos: 20-45% CPU and ~50%

Is this normal? I'm thinking of stopping the node and upgrading the server to 16GB RAM.
Strange enough my API does not access the full mongoDB, only the parts after the restart of mongod.
1) Is it possible that mongod crashes because of lack of RAM?
2) RAM usage normal?
3) Stopping the node with best practices and restarting does not force me to --mongodb-wipe?

my config.ini:

    blocks-dir = "/mnt/xfs/mainnet/blocks" 

    bnet-endpoint = 0.0.0.0:4321
    bnet-follow-irreversible = 0
    bnet-no-trx = false
    read-mode = read-only
    validation-mode = light
    mongodb-uri = mongodb://127.0.0.1:27017/EOS
    mongodb-queue-size = 2048
    mongodb-abi-cache-size = 2048
    mongodb-block-start = 1
    mongodb-store-blocks = 0
    mongodb-store-transactions = 0
    mongodb-store-transaction-traces = 0
    mongodb-store-action-traces = 1
    mongodb-filter-on = *
    mongodb-filter-out = eosio:onblock:
    mongodb-filter-out = gu2tembqgage::
    mongodb-filter-out = blocktwitter::

    wasm-runtime = wabt
    p2p-max-nodes-per-host = 1
    http-validate-host = false
    https-client-validate-peers = 1
    abi-serializer-max-time-ms = 5000
    chain-state-db-size-mb = 32000
    reversible-blocks-db-size-mb = 340
    contracts-console = false
    allowed-connection = any
    max-clients = 100
    network-version-match = 0
    sync-fetch-span = 500
    connection-cleanup-period = 30
    max-implicit-request = 1500
    access-control-allow-origin = *
    access-control-allow-headers = *
    access-control-allow-credentials = false
    verbose-http-errors = true

    plugin = eosio::chain_plugin
    plugin = eosio::chain_api_plugin
    plugin = eosio::bnet_plugin
    plugin = eosio::mongo_db_plugin
    plugin = eosio::http_plugin  
jgiszczak commented 5 years ago

Running a mainnet node is indeed very resource intensive today. An SSD with high IOPS allocated is recommended. 16GB of RAM is recommended. It's entirely possible mongod crashed for lack of RAM, but consult your system logs. If the OOM Killer got it, it will be logged.

Stopping the node gracefully does not require --mongodb-wipe to restart.