GraphOS中的操作指标
了解您的操作指标,包括请求速率和延迟
一旦您已配置 图 向 GraphOS 发送 操作指标,您就可以在任何 变体's 洞察 页面中查看它们:
此页面结合了 操作 和 字段 指标,并分为两个主要部分:
- 可折叠的左侧侧边栏,您可以在此 搜索、筛选和排序操作 和 字段(有关字段指标信息,请参阅 字段使用)
- 主要洞察视图,显示 操作概述 以及 操作 指标,例如 请求速率
当您单击左侧侧边栏或概述中的 操作名 时,此视图将显示有关单个 操作 的 详细信息。您始终可以通过单击左侧侧边栏上的 概述 返回整体视图。
操作概述
超图的使用情况和性能在 操作概述 中居中且顶部,因为它总结了最近的
- 发送到您的 路由器的 请求速率
- 您的 超图's p95 服务时间
- 您的 超图's 错误百分比
在每个这些指标下方,您还可以看到以下操作信息:
- 最高的请求速率
- 最慢的p95服务时间
- 最高的错误百分比
您可以通过点击操作名称来查看更详细的信息,或向下滚动查看整体操作指标。
操作指标
在操作概览下方直接,您可以找到以下整体操作指标图表:
- 时间序列图表显示了请求速率和订阅通知速率,以每分钟的请求数(req/min)为单位。
- 请求延迟和订阅通知延迟热图,通常以毫秒(ms)、秒(s)和/或分钟(min)表示。
- 请求延迟分布和订阅通知延迟分布直方图。
包含在请求指标图中的mutations和subscription registrations。请求图表不包括订阅通知的数据,这些数据在订阅通知图表中单独展示。
ⓘ 注意
一个特定操作详情页面显示的是subscription registration指标,而不是一般的请求指标。
请求速率
请求速率图表可以帮助您监控超图(supergraph)随时间变化的流量。请求速率的急剧上升或下降可能表明潜在的瓶颈或用户行为的变化。
请求速率指标还可以帮助进行容量规划。通过跟踪请求速率趋势,您可以做出有关基础设施扩展的明智决策。您还可以依赖于这些 图表进行异常检测,包括识别DDoS攻击、应用程序错误或资源限制等问题。
订阅通知速率
订阅通知速率是所有在指定时间内的订阅所发送的更新(通知)总数。订阅通知速率的突然上升可能表明实时活动的激增,并帮助您预测需要扩展基础设施的需求。
请求延迟
请求延迟衡量的是处理GraphQL operation并返回响应给客户端所需的时间。操作缓慢可能会导致应用程序运行缓慢和用户不满。
请求延迟指标可以让你深入了解你服务各个组件的性能,如resolvers、data sources和第三方服务。这些数据可以帮助你确定需要优化的领域。
订阅通知延迟
订阅通知延迟是指由于您图数据的变化,您的图向客户端发送更新所需的时间。
例如,想象一个使用订阅的聊天应用:
在您的图模式中定义了一个订阅。它可能看起来像这样:
type Subscription {newMessage(chatId: ID!): Message}此订阅名为
newMessage
,并接受一个chatId
作为参数。它用于订阅特定聊天中的新消息。客户端应用程序初始化到图的WebSocket连接。WebSocket连接允许客户端和图之间进行实时通信。
当用户加入聊天或打开消息窗口时,客户端向图发送一个订阅注册请求。例如:
subscription {newMessage(chatId: "123") {textsendertimestamp}}此订阅注册告诉图实时地向客户端发送具有
chatId
"123"的聊天的新消息。客户端指定它希望接收的消息类型的字段。当用户在指定的聊天中发送新消息时,客户端初始化一个GraphQL变异来创建消息。变异处理程序处理请求,包括插入数据和返回响应。
图将新消息数据发布到订阅客户端。它通过WebSocket连接将新消息数据作为对客户端订阅的响应发送。
客户端应用程序接收新的消息数据,并实时更新聊天界面。用户可以立即看到收到的消息,无需刷新或手动请求数据更新。
订阅通知的延迟是从第5步到第6步的时间,从您的图发出更新——通常通过您的路由器——到客户端接收更新之间的时间。
低延迟对实时应用来说至关重要,以确保数据能够及时传递。高延迟可能表明网络问题。它还可能表明解析器的性能慢或联合订阅的数据获取效率低。
联合订阅通知延迟
联合订阅是依赖于多个子图数据的订阅。联合订阅在步骤3之后有一个额外的步骤:路由器必须在向客户端发布聚合响应之前从任何其他必要的子图获取数据。
对于联合订阅,延迟是从路由器收到某个子图的解析器响应时开始计量的,直到客户端接收聚合响应,包括路由器从后续子图获取数据并将其聚合到单个响应中所花费的时间。
由于从后续子图获取数据需要这些子图的解析器完成,因此联合订阅通知中的高延迟可能表明解析器性能慢。
请求延迟分布
请求延迟分布图说明了您请求延迟的频率和数量。此图可以帮助您识别请求延迟的中心趋势、变异性和模式。
订阅通知延迟分布
订阅通知延迟分布图提供了与请求延迟分布直方图相同的资料和见解,但仅包括订阅通知的延迟,而不是所有请求的延迟。
操作指标中的延迟字段
您可以使用@defer
指令来延迟返回方案中某些字段的数据。@defer
的使用不会影响延迟指标,因为它们只考虑包含非延迟字段的初始响应。您可以在解析器级跟踪中查看延迟字段的执行时间。
操作详情
点击操作名称时,您可以在主要洞察视图中打开该操作的详细信息。您可以使用操作名称下方的切换按钮查看操作的使用情况、错误指标或跟踪。
主要使用方式包括客户端使用信息以及操作's 操作签名和查询计划图表或文本,您可以通过点击查看操作显示。
在客户端使用信息下方,您可以查看与操作概述页面相同的操作指标(只包含您正在查看的特定操作的操作's 数据。这些指标包括在操作概述中显示的所有订阅's 通知指标。
订阅指标
如果您查看特定订阅's 详细页面,您将看到包含该订阅数据的图表。这包括操作概述中显示的所有订阅's 通知指标。订阅详细页面显示订阅注册指标,而不是操作概述中的请求数据。
解析器级别的跟踪
如果您在subgraphs中启用跟踪报告,GraphOS Studio可以显示每个操作's 解析器级别的跟踪信息。
操作的跟踪选项卡提供了此操作中每个字段's 时间信息和错误信息的拆解。跟踪可以帮助您识别机会,通过优化那些当前作为瓶 neck's resolvers's 的操作,以改善您的超级图's 整体性能。
延迟获取
延迟获取的执行时间只包括延迟字段解析器完成的时间,不包括带有这些字段的客户端响应被延迟的时间。
启用跟踪
如果您使用带@apollo/subgraph
库的Apollo Server,联邦跟踪报告默认启用。
有关第三方GraphQL服务器的说明,请参阅您subgraph使用的特定服务器库的文档。