Node Operators Guide
This guide covers the detailed operational aspects of running an ENI node, including configuration management, maintenance procedures, and best practices for stable and efficient operation.
Configuration Management
Directory Structure
The configuration for an ENI node is stored in the ~/.eni/config/ directory:
~/.eni/config/
├── app.toml # Application configuration (gas fees, API settings, pruning, etc.)
├── client.toml # CLI and client-related settings
├── config.toml # Core Tendermint settings (network, consensus, and RPC)
├── genesis.json # Genesis file for the chain, defining the initial state
├── node_key.json # Unique node identity key for peer-to-peer (P2P) networking
└── priv_validator_key.json # Validator private signing key (if running as a validator)Key Configuration Parameters
Network Settings (config.toml)
[p2p]
# Public IP for other nodes to reach you
external_address = "your-public-ip:26656"
# Local address to listen for incoming P2P connections
laddr = "tcp://0.0.0.0:26656"
# Allowed number of peers
max_num_inbound_peers = 40
max_num_outbound_peers = 20
# Network bandwidth limits to prevent congestion
send_rate = 20480000 # 20MB/s
recv_rate = 20480000 # 20MB/s
[rpc]
# RPC listening address
laddr = "tcp://0.0.0.0:26657"
# Maximum concurrent connections
max_open_connections = 900
# Transaction confirmation timeout
timeout_broadcast_tx_commit = "10s"Application Settings (app.toml)
Database Management
Database Types
ENI supports two database backends:
ENI-DB (Recommended)
Optimized for performance and sync time
Reduced resource usage
Suitable for all nodes
Traditional IAVL DB
Standard Cosmos SDK database
More extensively tested
ENI-DB Configuration
Setting a very small [more frequent] pruning interval may cause conflicts with automatic snapshots. A very large [less frequent] pruning interval means longer total pruning time, which could lead to missed blocks and extended resync times.
Database Maintenance
The database is generally stable and can run without intervention, but occasional attention may be required:
Service Management
Systemd Commands
Log Management
Enable log rotation to prevent logs from consuming excessive disk space:
Update Procedures
Minor Updates
For minor updates that do not break consensus:
Major Updates
For major upgrades introducing state-breaking changes:
Wait for the specified upgrade block height [visible in the upgrade proposal’s 'plan']
The node will stop automatically.
Update/replace the binary
Restart the node.
Tip - Build the upgrade before the halt height so it can be quickly swapped in, minimizing downtime.
Performance Optimization
The effectiveness of performance optimizations may vary depending on system hardware, workload, and network conditions. Research and test any changes in a controlled environment before implementation to ensure compatibility with your specific configuration and requirements. Always back up critical data before making modifications.
Memory Management (sysctl Tuning)
Optimizing memory management settings can improve performance and stability, especially for high-load nodes. These settings control swap usage and the handling of dirty pages in RAM.
Network Stack Optimization
Tuning the network stack can improve packet handling efficiency and throughput, particularly for nodes handling many peers and high transaction volumes.
Storage Optimization
Optimizing storage settings can significantly reduce write latency and improve database performance, especially for nodes using NVMe SSDs.
Backup and Recovery
Regular Backups
Automate backups to prevent data loss:
Recovery Procedure
Restore from a backup in case of corruption or accidental deletion:
Troubleshooting
Common Issues and Solutions
Synchronization Issues
Check available disk space (
df -h)Ensure proper peer connections (
enid net info)Verify firewall settings (port 26656 open)
Performance Issues
Monitor system resources (
htoporiotop)Check disk I/O performance (
iostat)Analyze network traffic (
iftop)
Database Issues
Run a database integrity check with:
If errors are detected, consider restoring from a recent backup.
Consider pruning excessive historical data by adjusting
ss-keep-recentinapp.toml, or run:
Alternatively, manually delete old state snapshots to free up space:
Diagnostic Commands
Security Considerations
Use a firewall and rate limiting to prevent attacks
Keep the system and node software updated
Secure SSH access with key-based authentication
Protect validator keys with offline storage or a hardware security module (HSM)
For more in-depth system and configuration guidance, refer to the [Advanced Configuration and Monitoring Guide](./advanced-config-monitoring).
Last updated