Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
Many common resources such as CPUs, threads, file descriptors, heap, etc. are shared between multiple SolrCore-s within a CoreContainer.
Most of these resources can already be monitored for usage using metrics. However, in most cases Solr doesn't have any control mechanism to actually do something about excessive use (or extreme under-utilization) of a resource by any particular SolrCore or CoreContainer. Furthermore, even when a control mechanism exists it's usually available only as a static configuration parameter (eg. max cache size) and changing it requires at least a core reload, or restarting the JVM.
This issue is especially important for multi-tenantĀ applications where the admin cannot assume voluntary co-operation of users and needs more fine-grained tools to prevent DOS attacks, either accidental or purposeful.
This is an umbrella issue that proposes the following:
- adding a generic ResourceManager component to Solr, which would run at a CoreContainer level and would be able to monitor and enforce both global limits and a "fair" division of resources among competing SolrCore-s.
- extending key existing components so that their resource consumption aspects can be dynamically controlled.
- adding a number of management plugins that implement specificĀ strategies for managing eg. the cache sizes according to the specified "fairness" and global limits.
- the API should allow for implementation of this control loop both in Solr and as an outside mechanism.
Attachments
Issue Links
- incorporates
-
SOLR-13579 Create resource management API
- Open
- relates to
-
SOLR-13558 Allow dynamic resizing of SolrCache-s
- Resolved
- mentioned in
-
Page Loading...