nodeos的插件txn_test_gen_plugin用法

txn_test_gen_plugin

This plugin provides a way to generate a given amount of transactions per second against the currency contract. It runs internally to eosd to reduce overhead.

This general procedure was used when doing Dawn 3.0 performance testing as mentioned in https://github.com/EOSIO/eos/issues/2078.

Performance testing

The following instructions describe how to use the txn_test_gen_plugin plugin to generate 1,000 transaction per second load on a simple EOSIO node.

Create config and data directories

Make an empty directory for our configs and data, mkdir ~/eos.data, and define a logging.json that doesn’t print debug information (which occurs for each txn) to the console:

cat << EOF > ~/eos.data/logging.json
{
  "includes": [],
  "appenders": [{
      "name": "consoleout",
      "type": "console",
      "args": {
        "stream": "std_out",
        "level_colors": [{
            "level": "debug",
            "color": "green"
          },{
            "level": "warn",
            "color": "brown"
          },{
            "level": "error",
            "color": "red"
          }
        ]
      },
      "enabled": true
    }
  ],

  "loggers": [{
      "name": "default",
      "level": "info",
      "enabled": true,
      "additivity": false,
      "appenders": [
        "consoleout"
      ]
    }
  ]
}
EOF

Launch producer

$ ./nodeos -d ~/eos.data/producer_node --config-dir ~/eos.data/producer_node -l ~/eos.data/logging.json --http-server-address "" -p eosio -e

Launch non-producer that will generate transactions

$ ./nodeos -d ~/eos.data/generator_node --config-dir ~/eos.data/generator_node -l ~/eos.data/logging.json --plugin eosio::txn_test_gen_plugin --plugin eosio::chain_api_plugin --p2p-peer-address localhost:9876 --p2p-listen-endpoint localhost:5555

Create a wallet on the non-producer and set bios contract

$ ./cleos wallet create --to-console
$ ./cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
$ ./cleos set contract eosio ~/eos/build.release/contracts/eosio.bios/ 

Initialize the accounts txn_test_gen_plugin uses

$ curl --data-binary '["eosio", "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]' http://127.0.0.1:8888/v1/txn_test_gen/create_test_accounts

Start transaction generation, this will submit 20 transactions evey 20ms (total of 1000TPS)

$ curl --data-binary '["", 20, 20]' http://127.0.0.1:8888/v1/txn_test_gen/start_generation

Note the producer console prints

eosio generated block 9b8b851d... #3219 @ 2018-04-25T16:07:47.000 with 500 trxs, lib: 3218
eosio generated block e5b3cd5d... #3220 @ 2018-04-25T16:07:47.500 with 500 trxs, lib: 3219
eosio generated block b243aeaa... #3221 @ 2018-04-25T16:07:48.000 with 500 trxs, lib: 3220

Note in the console output there are 500 transactions in each of the blocks which are produced every 500 ms yielding 1,000 transactions / second.

Demonstration

The following video provides a demo: https://vimeo.com/266585781

另一个参考:https://ljd1996.github.io/2019/02/27/EOS%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/

猜你喜欢

转载自blog.csdn.net/weixin_39896629/article/details/134978092
gen