@solana/blockexplorer v1.87.10
Solana Block Explorer
Prerequisites
Redis
- Ubuntu:
apt-get install redis-server - MacOS:
brew install redis
NodeJS
- Install node.js via your favorite mechanism
- Install yarn (typically
npm install -g yarn)
Quick Start
Ensure Redis is running with redis-cli ping. If the ping fails, start redis
with:
$ redis-server &Then install the block explorer:
$ npm install -g @solana/blockexplorerBuild and run a local Solana node:
$ git clone https://github.com/solana-labs/solana.git
$ cd solana/
$ cargo build --all
$ ./run.shIn another terminal start the block explorer:
$ solana-blockexplorerDevelopment Info
Setup the workspace:
$ yarnStart the API service and Web UI manually with:
$ yarn start:api
$ yarn start:uiThen configure and start a local Solana node. From the main solana repository:
$ cargo build --all
$ ./run.shand if desired for UI testing:
$ ./multinode-demo/client.sh --tx_count 40 --threads 2 -z 400High Performance Use Cases
Redis via Unix Domain Socket
Redis is known as a very fast in-memory data structure server. To keep up with Solana speeds, it may be useful to enable Unix Domain Socket communication for added performance (potentially 10-40% or more depending on the operations).
Add configuration similar to the following to your /etc/redis/redis.conf (or equivalent):
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770Increasing max socket connections on Linux may also prove useful:
sudo sysctl net.core.somaxconn=16384Remember to restart redis-server to pick up the new configuration:
sudo service redis-server restartEnsure that your API unix user is in the same group as your redis user so it can read
the file. For example, you may need to do something like this:
sudo chgrp -R ubuntu /var/run/redisFinally, update the redis section of api/config.js to enable the path configuration
which takes precedence over the host/port options:
...
redis: {
...
path: '/var/run/redis/redis-server.sock',
},
...If you would like to test Redis performance, the redis-benchmark tool is very handy
for quick sanity checks while tuning configuration.
Results using localhost TCP socket:
$ redis-benchmark -q -n 2000000 -c 1000 -P 40
PING_INLINE: 567215.00 requests per second
PING_BULK: 1021450.50 requests per second
SET: 587026.69 requests per second
GET: 741839.75 requests per second
INCR: 619195.06 requests per second
LPUSH: 671366.19 requests per second
RPUSH: 810701.25 requests per second
LPOP: 473372.78 requests per second
RPOP: 769230.81 requests per second
SADD: 925925.88 requests per second
HSET: 693721.81 requests per second
SPOP: 914494.75 requests per second
LPUSH (needed to benchmark LRANGE): 547495.19 requests per second
LRANGE_100 (first 100 elements): 34660.24 requests per second
LRANGE_300 (first 300 elements): 9543.71 requests per second
LRANGE_500 (first 450 elements): 6180.72 requests per second
LRANGE_600 (first 600 elements): 4716.88 requests per second
MSET (10 keys): 123137.54 requests per secondResults using Unix Domain Socket:
$ redis-benchmark -q -n 2000000 -c 1000 -P 40 -s /var/run/redis/redis-server.sock
PING_INLINE: 1038421.62 requests per second
PING_BULK: 1673640.12 requests per second
SET: 896459.00 requests per second
GET: 1175779.00 requests per second
INCR: 1107419.75 requests per second
LPUSH: 814995.94 requests per second
RPUSH: 768049.12 requests per second
LPOP: 775494.38 requests per second
RPOP: 884564.38 requests per second
SADD: 1047120.44 requests per second
HSET: 758437.62 requests per second
SPOP: 1275510.25 requests per second
LPUSH (needed to benchmark LRANGE): 810372.81 requests per second
LRANGE_100 (first 100 elements): 58491.50 requests per second
LRANGE_300 (first 300 elements): 12462.15 requests per second
LRANGE_500 (first 450 elements): 7449.32 requests per second
LRANGE_600 (first 600 elements): 4019.78 requests per second
MSET (10 keys): 120279.05 requests per second6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago