docs-v2/content/influxdb/v1.5/troubleshooting/query_management.md

174 lines
5.6 KiB
Markdown
Raw Normal View History

2020-07-30 03:44:04 +00:00
---
title: InfluxDB query management
menu:
influxdb_1_5:
name: Query management
weight: 20
parent: Troubleshooting
---
With InfluxDB's query management features, users are able to
identify currently-running queries,
kill queries that are overloading their system,
and prevent and halt the execution of inefficient queries with several configuration settings.
<table style="width:100%">
<tr>
<td><a href="#list-currently-running-queries-with-show-queries">SHOW QUERIES</a></td>
<td><a href="#stop-currently-running-queries-with-kill-query">KILL QUERY</a></td>
<td><a href="#configuration-settings-for-query-management">Configuration Settings</a></td>
</tr>
</table>
## List currently-running queries with `SHOW QUERIES`
`SHOW QUERIES` lists the query id, query text, relevant database, and duration
of all currently-running queries on your InfluxDB instance.
#### Syntax:
```
SHOW QUERIES
```
#### Example:
```
> SHOW QUERIES
qid query database duration
37 SHOW QUERIES 100368u
36 SELECT mean(myfield) FROM mymeas mydb 3s
```
##### Explanation of the output:
<br>
- `qid`&emsp;&emsp;&emsp;&nbsp;The id number of the query. Use this value with [`KILL - QUERY`](/influxdb/v1.5/troubleshooting/query_management/#stop-currently-running-queries-with-kill-query).
- `query`&emsp;&emsp;&thinsp;&thinsp;The query text.
- `database`&emsp;The database targeted by the query.
- `duration`&emsp;The length of time that the query has been running.
See [Query Language Reference](/influxdb/v1.5/query_language/spec/#durations)
for an explanation of InfluxDB's time units.
## Stop currently-running queries with `KILL QUERY`
`KILL QUERY` tells InfluxDB to stop running the relevant query.
#### Syntax:
Where `qid` is the query ID, displayed in the [`SHOW QUERIES`](/influxdb/v1.3/troubleshooting/query_management/#list-currently-running-queries-with-show-queries) output:
```
KILL QUERY <qid>
```
***InfluxDB Enterprise clusters:*** To kill queries on a cluster, you need to specify the query ID (qid) and the TCP host (for example, `myhost:8088`),
2020-07-30 03:44:04 +00:00
available in the `SHOW QUERIES` output.
```
KILL QUERY <qid> ON "<host>"
```
A successful `KILL QUERY` query returns no results.
#### Examples:
```
-- kill query with qid of 36 on the local host
> KILL QUERY 36
>
```
```
-- kill query on InfluxDB Enterprise cluster
2020-07-30 03:44:04 +00:00
> KILL QUERY 53 ON "myhost:8088"
>
```
## Configuration settings for query management
The following configuration settings are in the
[[coordinator]](/influxdb/v1.5/administration/config/#query-management-settings-coordinator) section of the
configuration file.
### max-concurrent-queries
The maximum number of running queries allowed on your instance.
The default setting (`0`) allows for an unlimited number of queries.
If you exceed `max-concurrent-queries`, InfluxDB does not execute the query and
outputs the following error:
```
ERR: max concurrent queries reached
```
### query-timeout
The maximum time for which a query can run on your instance before InfluxDB
kills the query.
The default setting (`"0"`) allows queries to run with no time restrictions.
This setting is a [duration literal](/influxdb/v1.5/query_language/spec/#durations).
If your query exceeds the query timeout, InfluxDB kills the query and outputs
the following error:
```
ERR: query timeout reached
```
### log-queries-after
The maximum time a query can run after which InfluxDB logs the query with a
`Detected slow query` message.
The default setting (`"0"`) will never tell InfluxDB to log the query.
This setting is a [duration literal](/influxdb/v1.5/query_language/spec/#durations).
Example log output with `log-queries-after` set to `"1s"`:
```
[query] 2016/04/28 14:11:31 Detected slow query: SELECT mean(usage_idle) FROM cpu WHERE time >= 0 GROUP BY time(20s) (qid: 3, database: telegraf, threshold: 1s)
```
`qid` is the id number of the query.
Use this value with [`KILL QUERY`](/influxdb/v1.5/troubleshooting/query_management/#stop-currently-running-queries-with-kill-query).
The default location for the log output file is `/var/log/influxdb/influxdb.log`. However on systems that use systemd (most modern Linux distributions) those logs are output to `journalctl`. You should be able to view the InfluxDB logs using the following command: `journalctl -u influxdb`
### max-select-point
The maximum number of [points](/influxdb/v1.5/concepts/glossary/#point) that a
`SELECT` statement can process.
The default setting (`0`) allows the `SELECT` statement to process an unlimited
number of points.
If your query exceeds `max-select-point`, InfluxDB kills the query and outputs
the following error:
```
ERR: max number of points reached
```
InfluxDB checks the point count every second (so queries exceeding the maximum arent immediately aborted).
2020-07-30 03:44:04 +00:00
### max-select-series
The maximum number of [series](/influxdb/v1.5/concepts/glossary/#series) that a
`SELECT` statement can process.
The default setting (`0`) allows the `SELECT` statement to process an unlimited
number of series.
If your query exceeds `max-select-series`, InfluxDB does not execute the query
and outputs the following error:
```
ERR: max select series count exceeded: <query_series_count> series
```
### max-select-buckets
The maximum number of `GROUP BY time()` buckets that a query can process.
The default setting (`0`) allows a query to process an unlimited number of
buckets.
If your query exceeds `max-select-buckets`, InfluxDB does not execute the query
and outputs the following error:
```
ERR: max select bucket count exceeded: <query_bucket_count> buckets
```