

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Neptune 中的查询排队
<a name="access-graph-queuing"></a>

在开发和调整图形应用程序时，了解数据库对查询进行排队的方式有何影响可能会有帮助。在 Amazon Neptune 中，查询按以下方式排队：
+ 无论实例大小如何，每个实例可排队的最大查询数为 8192。超过该数字之后，系统将拒绝任意查询，查询失败并显示 `ThrottlingException`。
+ 一次可以执行的最大查询数由分配的工作线程数决定，该数目通常设置为可用虚拟 CPU 内核数 (vCPUs) 的两倍。
+ 查询延迟包括查询在队列中花费的时间、往返行程时间以及实际执行所用的时间。

## 确定在给定时刻队列中有多少查询
<a name="access-graph-queuing-count"></a>

该`MainRequestQueuePendingRequests` CloudWatch 指标以五分钟为粒度记录输入队列中等待的请求数（请参阅[Neptun CloudWatch e 指标](cw-metrics.md)）。

对于 Gremlin，您可以使用 [Gremlin 查询状态 API](gremlin-api-status.md) 返回的 `acceptedQueryCount` 值获取队列中的当前查询计数。但请注意，[SPARQL 查询状态 API](sparql-api-status.md) 返回的 `acceptedQueryCount` 值包括自服务器启动以来接受的所有查询，已完成的查询也计算在内。

## 查询排队如何影响超时
<a name="access-graph-queuing-timeouts"></a>

如上所述，查询延迟包括查询在队列中花费的时间以及执行所用的时间。

由于查询超时时段的测量通常是从进入队列时开始，因此进展缓慢的队列会导致许多查询一出队就超时。这显然是不可取的，所以除非查询可以快速执行，否则请尽量避免大量的查询排队。