Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kill sessions #2441

Merged
merged 1 commit into from
Jan 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions docs-2.0/3.ngql-guide/17.query-tuning-statements/2.kill-session.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# 终止会话(KILL SESSION)

`KILL SESSION`语句用于关闭未登出的会话(Session)。

!!! note

- 只有`root`用户可以终止会话。
- 执行`KILL SESSION`命令后,所有的 Graph 服务同步最新的会话信息需要等待 `2* session_reclaim_interval_secs`秒。

## 语法

`KILL SESSION`语句支持终止单个和多个会话,语法如下:

- 终止单个会话

```
KILL {SESSION|SESSIONS} <SessionId>
```
- `{SESSION|SESSIONS}`:支持`SESSION`和`SESSIONS`的写法。
- `<SessionId>`:指会话 Session 的 ID。可执行 [SHOW SESSIONS 命令](../../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md)查看会话 ID。


- 终止多个会话

```
SHOW SESSIONS
| YIELD $-.SessionId AS sid [WHERE <filter_clause>]
| KILL {SESSION|SESSIONS} $.sid
```

!!! note

`KILL SESSION`语句支持管道操作,即将`SHOW SESSIONS`语句与`KILL SESSION`语句结合使用,以终止多个会话。

- `[WHERE <filter_clause>]`:
- 可选项,使用`WHERE`子句过滤会话;`<filter_expression>`指滤过表达式,例如`WHERE $-.CreateTime < datetime("2022-12-14T18:00:00")`。如果不加改选项,则关闭所有当前会话。
- `WHERE`子句中支持的过滤项有:`SessionId`、`UserName`、`SpaceName`、`CreateTime`、`UpdateTime`、`GraphAddr`、`Timezone`、`ClientIp`。可以执行 [SHOW SESSIONS 命令](../../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md)查看这些过滤项的含义。

- `{SESSION|SESSIONS}`:支持`SESSION`和`SESSIONS`的写法。

!!! caution

请谨慎使用过滤条件以防误删会话。


## 示例

- 终止单个会话。

```
nebula> KILL SESSION 1672887983842984
```

- 终止多个会话。

- 终止除创建时间小于`2022-12-14T18:00:00`的会话外的所有会话。
```
nebula> SHOW SESSIONS | YIELD $-.SessionId AS sid WHERE $-.CreateTime < datetime("2023-01-05T18:00:00") | KILL SESSIONS $-.sid
```

- 终止创建时间最早的两个会话。
```
nebula> SHOW SESSIONS | YIELD $-.SessionId AS sid, $-.CreateTime as CreateTime | ORDER BY $-.CreateTime ASC | LIMIT 2 | KILL SESSIONS $-.sid
```

- 终止用户名为`session_user1`创建的所有会话。
```
nebula> SHOW SESSIONS | YIELD $-.SessionId as sid WHERE $-.UserName == "session_user1" | KILL SESSIONS $-.sid
```

- 终止所有会话
```
nebula> SHOW SESSIONS | YIELD $-.SessionId as sid | KILL SESSION $-.sid

// 或者
nebula> SHOW SESSIONS | KILL SESSIONS $-.SessionId
```
!!! caution
终止所有会话时,当前会话也会被终止。请谨慎使用。


Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 注意事项

- 执行`exit`退出登录时,客户端会调用 API `release`,释放会话并清除会话信息。如果没有正常退出,且没有在配置文件 [nebula-graphd.conf](../../../5.configurations-and-logs/1.configurations/3.graph-config.md) 设置空闲会话超时时间(`session_idle_timeout_secs`),会话不会自动释放。对于未自动释放的会话,需要手动删除指定会话 (TODO: coding)。
- 执行`exit`退出登录时,客户端会调用 API `release`,释放会话并清除会话信息。如果没有正常退出,且没有在配置文件 [nebula-graphd.conf](../../../5.configurations-and-logs/1.configurations/3.graph-config.md) 设置空闲会话超时时间(`session_idle_timeout_secs`),会话不会自动释放。对于未自动释放的会话,需要手动删除指定会话,详情参见[终止会话](../../17.query-tuning-statements/2.kill-session.md)。

- `SHOW SESSIONS`查询所有 Graph 服务上的会话信息。

Expand Down Expand Up @@ -52,3 +52,6 @@ nebula> SHOW SESSION 1635254859271703;
|`GraphAddr`|会话的 Graph 服务地址和端口。|
|`Timezone`|保留参数,暂无意义。|
|`ClientIp`|会话的客户端 IP 地址。|



1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,7 @@ nav:
- 查询调优与终止:
- EXPLAIN和PROFILE: 3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md
- 终止查询: 3.ngql-guide/17.query-tuning-statements/6.kill-query.md
- 终止会话: 3.ngql-guide/17.query-tuning-statements/2.kill-session.md
- 作业管理: 3.ngql-guide/4.job-statements.md

- 安装部署:
Expand Down