Elasticsearch cluster.max_shards_per_node Setting

The cluster.max_shards_per_node setting in Elasticsearch controls the maximum number of shards (primary and replica) that can be allocated to a single node in the cluster. This setting is crucial for preventing overallocation of shards, which can lead to performance issues and cluster instability.

  • Default Value: 1000
  • Possible Values: Any positive integer
  • Recommendations: The optimal value depends on your cluster's hardware resources and specific use case. For most scenarios, the default value is sufficient. However, for clusters with powerful nodes or specific requirements, this value can be increased.

Example

To change the cluster.max_shards_per_node setting, in your elasticsearch.yml file:

cluster.max_shards_per_node: 2000

Increasing this value might be necessary when:

  • You have nodes with high-performance hardware capable of handling more shards
  • Your use case requires a large number of small indices

Effects of the change:

  • Allows more shards to be allocated to each node
  • Can potentially improve cluster utilization
  • May increase the risk of node overload if set too high

Common Issues and Misuses

  • Setting the value too high can lead to nodes becoming overloaded, causing performance degradation
  • Setting the value too low can result in unallocated shards and underutilized cluster resources
  • Ignoring this setting entirely can lead to unexpected shard allocation issues as the cluster grows

Do's and Don'ts

Do's:

  • Monitor your cluster's performance and adjust this setting as needed
  • Consider your hardware capabilities when setting this value
  • Use this setting in conjunction with other shard allocation settings for optimal cluster management

Don'ts:

  • Don't set this value arbitrarily high without considering the consequences
  • Don't ignore this setting, especially in production environments
  • Don't change this setting frequently without monitoring its impact

Frequently Asked Questions

Q: How does cluster.max_shards_per_node affect cluster performance?
A: This setting limits the number of shards per node, preventing overallocation that could lead to performance issues. A well-tuned value ensures balanced shard distribution and optimal resource utilization.

Q: Can I change cluster.max_shards_per_node dynamically?
A: Yes, this setting can be changed dynamically using the cluster update settings API. However, it's recommended to plan such changes carefully and during low-traffic periods.

Q: What happens if I set cluster.max_shards_per_node too low?
A: Setting it too low may result in unallocated shards, potentially leading to incomplete data distribution and reduced cluster efficiency.

Q: How do I determine the right value for my cluster?
A: Consider your hardware capabilities, the number and size of your indices, and your expected growth. Monitor cluster performance and adjust accordingly.

Q: Does cluster.max_shards_per_node affect both primary and replica shards?
A: Yes, this setting applies to the total number of shards on a node, including both primary and replica shards.

Pulse - Elasticsearch Operations Done Right

Stop googling errors and staring at dashboards.

Free Trial

Subscribe to the Pulse Newsletter

Get early access to new Pulse features, insightful blogs & exclusive events , webinars, and workshops.