

# 对会话错误进行故障排除
<a name="notebooks-spark-troubleshooting-sessions"></a>

使用本节中的信息对会话问题进行故障排除。

如果在会话启动期间出现自定义配置错误，Athena for Spark 控制台将显示一个错误消息横幅。要对会话启动错误进行故障排除，您可以检查会话状态更改或日志记录信息。

## 查看会话状态更改信息
<a name="notebooks-spark-troubleshooting-sessions-viewing-session-state-change"></a>

您可以从 Athena 笔记本编辑器或 Athena API 中获取有关会话状态更改的详细信息。

**在 Athena 控制台中查看会话状态信息**

1. 在 Athena 笔记本编辑器中，从右上角的**会话**菜单中选择**查看详细信息**。

1. 查看**当前会话**选项卡。**会话信息**部分显示会话 ID、工作组、状态和状态更改原因等信息。

   以下屏幕截图示例显示了**会话信息**对话框的**状态更改原因**部分中 Athena 中 Spark 会话错误的信息。  
![\[在 Athena for Spark 控制台中查看会话状态更改信息。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/notebooks-spark-custom-jar-cfg-1.jpeg)

**使用 Athena API 查看会话状态信息**
+ 在 Athena API 中，可在 [SessionStatus](https://docs.aws.amazon.com/athena/latest/APIReference/API_SessionStatus.html) 对象的 `StateChangeReason` 字段中查找会话状态更改信息。

**注意**  
在您手动停止会话之后，或者如果会话在空闲超时（默认值为 20 分钟）后停止，**StateChangeReason** 值将更改为会话已按请求终止。

## 使用日志记录对会话启动错误进行故障排除
<a name="notebooks-spark-troubleshooting-sessions-using-logging"></a>

[Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 会记录会话启动期间发生的自定义配置错误。在 CloudWatch Logs 中，搜索 `AthenaSparkSessionErrorLogger` 中的错误消息，以对会话启动失败进行故障排除。

有关 Spark 记录的更多信息，请参阅[记录 Athena 中的 Spark 应用程序事件](notebooks-spark-logging.md)。

有关在 Athena for Spark 中对会话进行故障排除的更多信息，请参阅 [对会话错误进行故障排除](#notebooks-spark-troubleshooting-sessions)。

## 特定会话问题
<a name="notebooks-spark-troubleshooting-sessions-specific-error-messages"></a>

使用本节中的信息对部分特定会话问题进行故障排除。

### 会话运行状况不佳
<a name="notebooks-spark-troubleshooting-sessions-unhealthy"></a>

如果您收到错误消息 Session in unhealthy state. Please create a new session（会话运行状况不佳，请创建新会话），请终止现有会话并创建一个新会话。

### 无法与笔记本服务器建立连接
<a name="notebooks-spark-troubleshooting-sessions-wss-blocked"></a>

打开笔记本后，可能显示以下错误消息：

```
A connection to the notebook server could not be established.  
The notebook will continue trying to reconnect.  
Check your network connection or notebook server configuration.
```

#### 原因
<a name="notebooks-spark-troubleshooting-sessions-wss-blocked-cause"></a>

当 Athena 打开笔记本后，Athena 会创建会话并使用预签名的笔记本 URL 连接到笔记本。与笔记本的连接使用 WSS（[WebSocket Secure](https://en.wikipedia.org/wiki/WebSocket)）协议。

出现错误的可能原因如下：
+ 本地防火墙（例如公司防火墙）正在阻止 WSS 流量。
+ 本地计算机上的代理或防病毒软件正在阻止 WSS 连接。

#### 解决方案
<a name="notebooks-spark-troubleshooting-sessions-wss-blocked-solution"></a>

假设您在 `us-east-1` 区域中有 WSS 连接，如下所示：

```
wss://94c2bcdf-66f9-4d17-9da6-7e7338060183.analytics-gateway.us-east-1.amazonaws.com/
api/kernels/33c78c82-b8d2-4631-bd22-1565dc6ec152/channels?session_id=
7f96a3a048ab4917b6376895ea8d7535
```

要解决错误，请使用以下策略之一。
+ 使用通配符模式语法允许列出各个 AWS 区域 和 AWS 账户 中端口 `443` 上的 WSS 流量。

  ```
  wss://*amazonaws.com
  ```
+ 使用通配符模式语法允许列出某个 AWS 区域 中端口 `443` 上和您指定的 AWS 区域 各个 AWS 账户 中的 WSS 流量。下面的示例使用了 `us-east-1`。

  ```
  wss://*analytics-gateway.us-east-1.amazonaws.com
  ```