ClickHouse uses threads from the Global Thread pool to process queries and also perform background operations like merges and mutations. If there is no idle thread to process a query, then a new thread is created in the pool.
The maximum size of the global thread pool is determined by the
max_thread_pool_size setting, which defaults to 10,000. You can modify this value in your config - here we set it to 20,000:
If you modify
max_thread_pool_size, we recommend changing
thread_pool_queue_size to be the same value. The
thread_pool_queue_size setting is the maximum number of jobs that can be scheduled on the Global Thread pool:
You can also free up resources if your server has a lot of idle threads - using the
max_thread_pool_free_size setting. The default is 1,000, which means your Global Thread pool will never have more than 1,000 idle threads. The following example increases the value to 2,000:
Check out the docs for more details on the settings above and other settings that affect the Global Thread pool.