本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排除 AWS X-Ray 的故障
本主题列出了您在使用 X-Ray API、控制台或开发工具包时可能会遇到的常见错误和问题。如果您发现某个问题未在此处列出,可以使用此页上的 Feedback 按钮来报告。
X-Ray SDK for Java
错误:线程“Thread-1”中发生异常 com.amazonaws.xray.exceptions.SegmentNotFoundException:无法开始名为“AmazonSNS”的子分段:无法找到分段。
此错误指示 X-Ray 开发工具包尝试记录对 AWS 的传出调用,但找不到打开的分段。这可在以下情况下发生:
-
servlet 筛选条件未配置 – X-Ray 开发工具包会使用名为
AWSXRayServletFilter
的筛选条件为传入请求创建分段。配置 servlet 筛选条件来分析传入请求。 -
您正在 servlet 代码外部使用分析过的客户端 – 如果您在启动代码或并非运行用于响应传入请求的其他代码中使用分析过的客户端来发出调用,则必须手动创建一个分段。有关示例,请参阅分析启动代码。
-
您正在工作线程中使用分析过的客户端 – 当您创建新线程时,X-Ray 记录器会丢失对打开的分段的引用。您可以使用
getTraceEntity
和setTraceEntity
方法来获取对当前分段或子分段的引用 (Entity
),并将其传递回线程内部的记录器。有关示例,请参阅在工作线程中使用分析的客户端。
X-Ray SDK for Node.js
问题:CLS 无法与 Sequelize 一起使用
使用 cls
方法将X-Ray SDK for Node.js命名空间传递到 Sequelize。
var AWSXRay = require('aws-xray-sdk');
const Sequelize = require('sequelize');
Sequelize.cls = AWSXRay.getNamespace();
const sequelize = new Sequelize('database', 'username', 'password');
问题:CLS 无法与 Bluebird 一起使用
使用 cls-bluebird
实现 Bluebird 与 CLS 配合工作。
var AWSXRay = require('aws-xray-sdk');
var Promise = require('bluebird');
var clsBluebird = require('cls-bluebird');
clsBluebird(AWSXRay.getNamespace());
X-Ray 守护程序
问题:守护程序使用错误的凭证
守护程序使用 AWS 开发工具包来加载凭证。如果您使用多种方法提供凭证,将使用优先顺序最高的方法。有关更多信息,请参阅运行守护程序。