Overview
CockroachDB provides multiple configuration mechanisms for controlling node behavior and cluster-wide settings. Configuration can be specified through command-line flags, environment variables, and SQL-based cluster settings.Configuration Methods
Command-Line Flags
Flags are specified when starting a node:Environment Variables
Many flags have corresponding environment variable equivalents:Cluster Settings
Cluster-wide settings are modified via SQL:Node Configuration Flags
Network Configuration
Listen Addresses
Listen Addresses
—listen-addrThe address for inter-node communication:Default: —sql-addrSeparate address for SQL connections:—http-addrAdmin UI and HTTP API address:Default:
localhost:26257—advertise-addrThe address advertised to other nodes:localhost:8080Port Configuration
Port Configuration
Default ports:
- 26257: SQL and inter-node communication
- 8080: Admin UI and HTTP API
Storage Configuration
Store Specification
Store Specification
Basic store:Store with attributes:Store with size limit:Multiple stores:In-memory store (testing only):
Memory Configuration
Cache Settings
Cache Settings
—cacheSize of the cache for storing key-value data:Default: 128 MiB (or 25% of system memory)The cache stores frequently accessed data to reduce disk I/O.
SQL Memory
SQL Memory
—max-sql-memoryMaximum memory for SQL operations:Default: 128 MiB (or 25% of system memory)Controls memory available for:
- Query execution
- Sorting operations
- Hash joins
- Intermediate query results
Go Memory Limit
Go Memory Limit
—max-go-memoryGo runtime memory limit:Can also use
GOMEMLIMIT environment variable:Locality Configuration
Locality Tiers
Locality Tiers
Configure node locality for geo-distributed deployments:Common patterns:Locality enables:
- Replica placement preferences
- Follower reads from nearby nodes
- Geo-partitioning
- Latency-based load balancing
Security Configuration
Certificate Configuration
Certificate Configuration
Secure mode (production):Required certificates:
ca.crt: Certificate authoritynode.crt: Node certificatenode.key: Node private key
Join Configuration
Join Addresses
Join Addresses
Specify nodes to connect to when starting:Best practices:
- List 3-5 stable nodes
- Use DNS names or stable IPs
- Same join list for all nodes
- Nodes don’t need to be running
- Can include self-reference
Logging Configuration
Log Output Configuration
Log Configuration Options
Log Flags
Log Flags
—log-dir (deprecated, use Equivalent to:—log-file-verbosity (deprecated):Equivalent to:—log-file-max-size (deprecated):Equivalent to:
--log):Cluster Settings
Viewing Cluster Settings
Modifying Cluster Settings
Important Cluster Settings
Performance Settings
Performance Settings
| Setting | Description | Default |
|---|---|---|
kv.range_descriptor_cache.size | Range descriptor cache size | 64 MiB |
kv.raft.command.max_size | Maximum Raft command size | 64 MiB |
sql.distsql.distribute_index_joins | Enable distributed index joins | true |
sql.stats.automatic_collection.enabled | Auto-collect table statistics | true |
Replication Settings
Replication Settings
| Setting | Description | Default |
|---|---|---|
kv.snapshot_rebalance.max_rate | Maximum rebalance rate | 32 MiB/s |
kv.snapshot_recovery.max_rate | Maximum recovery rate | 32 MiB/s |
server.time_until_store_dead | Store considered dead after | 5m0s |
SQL Settings
SQL Settings
| Setting | Description | Default |
|---|---|---|
sql.defaults.default_int_size | Default integer size (4 or 8) | 8 |
sql.defaults.serial_normalization | Serial type normalization | rowid |
sql.log.slow_query.latency_threshold | Log slow queries threshold | 0s (disabled) |
Diagnostics Settings
Diagnostics Settings
| Setting | Description | Default |
|---|---|---|
diagnostics.reporting.enabled | Enable diagnostic reporting | true |
cluster.organization | Organization name | empty |
enterprise.license | Enterprise license key | empty |
Environment Variables
Common Environment Variables
| Variable | Purpose | Example |
|---|---|---|
COCKROACH_INSECURE | Enable insecure mode | export COCKROACH_INSECURE=true |
COCKROACH_HOST | Default host | export COCKROACH_HOST=localhost:26257 |
COCKROACH_CERTS_DIR | Certificate directory | export COCKROACH_CERTS_DIR=/certs |
GOMEMLIMIT | Go memory limit | export GOMEMLIMIT=8GiB |
GOGC | Go GC percentage | export GOGC=50 |
Development Variables
Configuration Files
CockroachDB does not use traditional configuration files. Instead:- Command-line flags: Set at node startup
- Cluster settings: Stored in
system.settingstable - Environment variables: Set in shell environment
To persist configuration, use init scripts or systemd unit files to set flags and environment variables.
Resource Limits
File Descriptors
CockroachDB requires high file descriptor limits:/etc/security/limits.conf:
Memory Limits
Recommended memory allocation:- Cache: 25% of system memory
- SQL Memory: 25% of system memory
- Go Runtime: Remaining system memory
Best Practices
Configuration Recommendations
Configuration Recommendations
- Document all changes: Maintain a record of non-default settings
- Test in staging: Validate configuration changes before production
- Use percentages for memory: Adapts to different hardware
- Set explicit locality: Required for geo-distributed deployments
- Monitor resource usage: Adjust settings based on actual workload
- Use secure mode: Always use certificates in production
- Consistent configuration: Use same settings across similar nodes
- Version awareness: Some settings require specific CockroachDB versions
Troubleshooting
Configuration Issues
Invalid flag values:- Check flag syntax and units (GiB vs GB)
- Verify flag is supported in your version
- Review startup logs for error messages
- Cluster settings require SQL connection
- Some settings require node restart
- Check permissions for setting modification
- Increase
--cacheand--max-sql-memory - Check system memory availability
- Monitor OOM events in system logs
See Also
- Cluster Management - Cluster setup and operations
- Logging - Detailed logging configuration
- Monitoring - Metrics and observability