tendermint/tm-bench
Anton Kaliaev 1644773e69
Merge pull request #68 from tendermint/ugrade-tm-monitor-and-tm-bench
Ugrade tm monitor and tm bench
2017-12-07 14:59:01 -06:00
..
Dockerfile [tm-bench] update alpine version 2017-07-29 12:54:28 -04:00
Dockerfile.dev [tm-bench] refactor code 2017-10-06 11:38:21 +04:00
LICENSE [tm-bench] update Makefile 2017-12-07 13:25:35 -06:00
Makefile extend the list of osarch to build for 2017-12-07 14:19:06 -06:00
README.rst Merge pull request #68 from tendermint/ugrade-tm-monitor-and-tm-bench 2017-12-07 14:59:01 -06:00
glide.lock [tm-bench] update to tm 0.12.1 2017-12-07 13:25:57 -06:00
glide.yaml [tm-bench] update to tm 0.12.1 2017-12-07 13:25:57 -06:00
main.go update tm-bench version to 0.2.1 2017-12-07 14:03:05 -06:00
transacter.go [tm-bench] update to tm 0.12.1 2017-12-07 13:25:57 -06:00

README.rst

Benchmarking and Monitoring
===========================

tm-bench
--------

Tendermint blockchain benchmarking tool: https://github.com/tendermint/tools/tree/master/tm-bench

For example, the following:

::

    tm-bench -T 10 -r 1000 localhost:46657

will output:

::

    Stats             Avg        Stdev      Max
    Block latency     6.18ms     3.19ms     14ms
    Blocks/sec        0.828      0.378      1
    Txs/sec           963        493        1811

Quick Start
^^^^^^^^^^^

Docker
~~~~~~

::

    docker run -it --rm -v "/tmp:/tendermint" tendermint/tendermint:0.12.1 init
    docker run -it --rm -v "/tmp:/tendermint" -p "46657:46657" --name=tm tendermint/tendermint:0.12.1

    docker run -it --rm --link=tm tendermint/bench tm:46657

Binaries
~~~~~~~~

If **Linux**, start with:

::

    curl -L https://s3-us-west-2.amazonaws.com/tendermint/0.12.1/tendermint_linux_amd64.zip && sudo unzip -d /usr/local/bin tendermint_linux_amd64.zip && sudo chmod +x tendermint

if  **Mac OS**, start with:

::

    curl -L https://s3-us-west-2.amazonaws.com/tendermint/0.12.1/tendermint_darwin_amd64.zip && sudo unzip -d /usr/local/bin tendermint_darwin_amd64.zip && sudo chmod +x tendermint

then run:

::

    tendermint init
    tendermint node --app_proxy=dummy

    tm-bench localhost:46657

with the last command being in a seperate window.

Usage
^^^^^

::

    tm-bench [-c 1] [-T 10] [-r 1000] [endpoints]

    Examples:
            tm-bench localhost:46657
    Flags:
      -T int
            Exit after the specified amount of time in seconds (default 10)
      -c int
            Connections to keep open per endpoint (default 1)
      -r int
            Txs per second to send in a connection (default 1000)
      -v    Verbose output

Development
^^^^^^^^^^^

::

    make get_vendor_deps
    make test

tm-monitor
----------

Tendermint blockchain monitoring tool; watches over one or more nodes, collecting and providing various statistics to the user: https://github.com/tendermint/tools/tree/master/tm-monitor

Quick Start
^^^^^^^^^^^

Docker
~~~~~~

::

    docker run -it --rm -v "/tmp:/tendermint" tendermint/tendermint init
    docker run -it --rm -v "/tmp:/tendermint" -p "46657:46657" --name=tm tendermint/tendermint

    docker run -it --rm --link=tm tendermint/monitor tm:46657

Binaries
~~~~~~~~

This will be the same as you did for ``tm-bench`` above, except for the last line which should be:

::

    tm-monitor localhost:46657

Usage
^^^^^

::

    tm-monitor [-v] [-no-ton] [-listen-addr="tcp://0.0.0.0:46670"] [endpoints]

    Examples:
            # monitor single instance
            tm-monitor localhost:46657

            # monitor a few instances by providing comma-separated list of RPC endpoints
            tm-monitor host1:46657,host2:46657
    Flags:
      -listen-addr string
            HTTP and Websocket server listen address (default "tcp://0.0.0.0:46670")
      -no-ton
            Do not show ton (table of nodes)
      -v    verbose logging

RPC UI
^^^^^^

Run ``tm-monitor`` and visit http://localhost:46670
You should see the list of the available RPC endpoints:

::

    http://localhost:46670/status
    http://localhost:46670/status/network
    http://localhost:46670/monitor?endpoint=_
    http://localhost:46670/status/node?name=_
    http://localhost:46670/unmonitor?endpoint=_

The API is available as GET requests with URI encoded parameters, or as JSONRPC
POST requests. The JSONRPC methods are also exposed over websocket.

Development
^^^^^^^^^^^

::

    make get_vendor_deps
    make test