mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 01:30:51 +00:00
Explain why max_concurrent_queries_for_all_users exists
This commit is contained in:
parent
5a665d1d42
commit
65013fcbd1
@ -90,8 +90,27 @@ ProcessList::EntryPtr ProcessList::insert(const String & query_, const IAST * as
|
||||
}
|
||||
|
||||
{
|
||||
/**
|
||||
* `max_size` check above is controlled by `max_concurrent_queries` server setting and is a "hard" limit for how many
|
||||
* queries the server can process concurrently. It is configured at startup. When the server is overloaded with queries and the
|
||||
* hard limit is reached it is impossible to connect to the server to run queries for investigation.
|
||||
*
|
||||
* With `max_concurrent_queries_for_all_users` it is possible to configure an additional, runtime configurable, limit for query concurrency.
|
||||
* Usually it should be configured just once for `default_profile` which is inherited by all users. DBAs can override
|
||||
* this setting when connecting to ClickHouse, or it can be configured for a DBA profile to have a value greater than that of
|
||||
* the default profile (or 0 for unlimited).
|
||||
*
|
||||
* One example is to set `max_size=X`, `max_concurrent_queries_for_all_users=X-10` for default profile,
|
||||
* and `max_concurrent_queries_for_all_users=0` for DBAs or accounts that are vital for ClickHouse operations (like metrics
|
||||
* exporters).
|
||||
*
|
||||
* Another creative example is to configure `max_concurrent_queries_for_all_users=50` for "analyst" profiles running adhoc queries
|
||||
* and `max_concurrent_queries_for_all_users=100` for "customer facing" services. This way "analyst" queries will be rejected
|
||||
* once is already processing 50+ concurrent queries (including analysts or any other users).
|
||||
*/
|
||||
|
||||
if (!is_unlimited_query && settings.max_concurrent_queries_for_all_users
|
||||
&& processes.size() > settings.max_concurrent_queries_for_all_users)
|
||||
&& processes.size() >= settings.max_concurrent_queries_for_all_users)
|
||||
throw Exception(
|
||||
"Too many simultaneous queries for all users. Current: " + toString(processes.size())
|
||||
+ ", maximum: " + settings.max_concurrent_queries_for_all_users.toString(),
|
||||
|
Loading…
Reference in New Issue
Block a user