mirror of
https://github.com/tendermint/tendermint.git
synced 2026-09-03 06:37:14 +00:00
limit number of open connections
Refs #1740 also, expose limit option for number concurrent streams for gRPC (unlimited by default)
This commit is contained in:
+17
-15
@@ -8,28 +8,30 @@ This functionality is disabled by default.
|
||||
To enable the Prometheus metrics, set `instrumentation.prometheus=true` if your
|
||||
config file. Metrics will be served under `/metrics` on 26660 port by default.
|
||||
Listen address can be changed in the config file (see
|
||||
`prometheus_listen_addr`).
|
||||
`instrumentation.prometheus_listen_addr`).
|
||||
|
||||
## List of available metrics
|
||||
|
||||
The following metrics are available:
|
||||
|
||||
```
|
||||
| Name | Type | Since | Description |
|
||||
| --------------------------------------- | ------- | --------- | ----------------------------------------------------------------------------- |
|
||||
| consensus_height | Gauge | 0.20.1 | Height of the chain |
|
||||
| consensus_validators | Gauge | 0.20.1 | Number of validators |
|
||||
| consensus_validators_power | Gauge | 0.20.1 | Total voting power of all validators |
|
||||
| consensus_missing_validators | Gauge | 0.20.1 | Number of validators who did not sign |
|
||||
| consensus_missing_validators_power | Gauge | 0.20.1 | Total voting power of the missing validators |
|
||||
| consensus_byzantine_validators | Gauge | 0.20.1 | Number of validators who tried to double sign |
|
||||
| consensus_byzantine_validators_power | Gauge | 0.20.1 | Total voting power of the byzantine validators |
|
||||
| consensus_block_interval_seconds | Histogram | 0.20.1 | Time between this and last block (Block.Header.Time) in seconds |
|
||||
| consensus_rounds | Gauge | 0.20.1 | Number of rounds |
|
||||
| consensus_num_txs | Gauge | 0.20.1 | Number of transactions |
|
||||
| mempool_size | Gauge | 0.20.1 | Number of uncommitted transactions |
|
||||
| consensus_total_txs | Gauge | 0.20.1 | Total number of transactions committed |
|
||||
| consensus_block_size_bytes | Gauge | 0.20.1 | Block size in bytes |
|
||||
| p2p_peers | Gauge | 0.20.1 | Number of peers node's connected to |
|
||||
| consensus_height | Gauge | 0.21.0 | Height of the chain |
|
||||
| consensus_validators | Gauge | 0.21.0 | Number of validators |
|
||||
| consensus_validators_power | Gauge | 0.21.0 | Total voting power of all validators |
|
||||
| consensus_missing_validators | Gauge | 0.21.0 | Number of validators who did not sign |
|
||||
| consensus_missing_validators_power | Gauge | 0.21.0 | Total voting power of the missing validators |
|
||||
| consensus_byzantine_validators | Gauge | 0.21.0 | Number of validators who tried to double sign |
|
||||
| consensus_byzantine_validators_power | Gauge | 0.21.0 | Total voting power of the byzantine validators |
|
||||
| consensus_block_interval_seconds | Histogram | 0.21.0 | Time between this and last block (Block.Header.Time) in seconds |
|
||||
| consensus_rounds | Gauge | 0.21.0 | Number of rounds |
|
||||
| consensus_num_txs | Gauge | 0.21.0 | Number of transactions |
|
||||
| mempool_size | Gauge | 0.21.0 | Number of uncommitted transactions |
|
||||
| consensus_total_txs | Gauge | 0.21.0 | Total number of transactions committed |
|
||||
| consensus_block_size_bytes | Gauge | 0.21.0 | Block size in bytes |
|
||||
| p2p_peers | Gauge | 0.21.0 | Number of peers node's connected to |
|
||||
```
|
||||
|
||||
## Useful queries
|
||||
|
||||
|
||||
@@ -78,6 +78,9 @@ We have a small tool, called `tm-monitor`, which outputs information from
|
||||
the endpoints above plus some statistics. The tool can be found
|
||||
[here](https://github.com/tendermint/tools/tree/master/tm-monitor).
|
||||
|
||||
Tendermint also can report and serve Prometheus metrics. See
|
||||
[Metrics](./metrics.md).
|
||||
|
||||
## What happens when my app dies?
|
||||
|
||||
You are supposed to run Tendermint under a [process
|
||||
@@ -204,3 +207,37 @@ ranges](https://github.com/tendermint/tendermint/blob/27bd1deabe4ba6a2d9b463b8f3
|
||||
This may not be the case for private networks, where your IP range is usually
|
||||
strictly limited and private. If that case, you need to set `addr_book_strict`
|
||||
to `false` (turn off).
|
||||
|
||||
- `rpc.max_open_connections`
|
||||
|
||||
By default, the number of simultaneous connections is limited because most OS
|
||||
give you limited number of file descriptors.
|
||||
|
||||
If you want to accept greater number of connections, you will need to increase
|
||||
these limits.
|
||||
|
||||
[Sysctls to tune the system to be able to open more connections](https://github.com/satori-com/tcpkali/blob/master/doc/tcpkali.man.md#sysctls-to-tune-the-system-to-be-able-to-open-more-connections)
|
||||
|
||||
...for N connections, such as 50k:
|
||||
|
||||
```
|
||||
kern.maxfiles=10000+2*N # BSD
|
||||
kern.maxfilesperproc=100+2*N # BSD
|
||||
kern.ipc.maxsockets=10000+2*N # BSD
|
||||
fs.file-max=10000+2*N # Linux
|
||||
net.ipv4.tcp_max_orphans=N # Linux
|
||||
|
||||
# For load-generating clients.
|
||||
net.ipv4.ip_local_port_range="10000 65535" # Linux.
|
||||
net.inet.ip.portrange.first=10000 # BSD/Mac.
|
||||
net.inet.ip.portrange.last=65535 # (Enough for N < 55535)
|
||||
net.ipv4.tcp_tw_reuse=1 # Linux
|
||||
net.inet.tcp.maxtcptw=2*N # BSD
|
||||
|
||||
# If using netfilter on Linux:
|
||||
net.netfilter.nf_conntrack_max=N
|
||||
echo $((N/8)) > /sys/module/nf_conntrack/parameters/hashsize
|
||||
```
|
||||
|
||||
The similar option exists for limiting the number of gRPC connections -
|
||||
`rpc.grpc_max_open_connections`.
|
||||
|
||||
@@ -73,9 +73,23 @@ laddr = "tcp://0.0.0.0:26657"
|
||||
# NOTE: This server only supports /broadcast_tx_commit
|
||||
grpc_laddr = ""
|
||||
|
||||
# Maximum number of simultaneous connections.
|
||||
# Does not include RPC (HTTP&WebSocket) connections. See max_open_connections
|
||||
# If you want to accept more significant number than the default, make sure
|
||||
# you increase your OS limits.
|
||||
# 0 - unlimited.
|
||||
grpc_max_open_connections = 900
|
||||
|
||||
# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool
|
||||
unsafe = false
|
||||
|
||||
# Maximum number of simultaneous connections (including WebSocket).
|
||||
# Does not include gRPC connections. See grpc_max_open_connections
|
||||
# If you want to accept more significant number than the default, make sure
|
||||
# you increase your OS limits.
|
||||
# 0 - unlimited.
|
||||
max_open_connections = 450
|
||||
|
||||
##### peer to peer configuration options #####
|
||||
[p2p]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user