GAE 为任务队列数据存储调用获取大量 CancellationException
GAE Getting lots of CancellationException for Task Queue DataStore call
我有一个运行 TaskQueue 作业的 Java GAE 实例。在过去的 48 小时内,我收到了很多 CancellationException 错误(24 小时内大约有 36 个)。
错误总是发生在对特定 table 的 DataStore 查询中。查询在索引列 projectId 上,查询是复合 OR(即 projectId = -1 或 projectId = 23)。整个table有问题有96条记录,任何一个查询最多会拉回20条记录。
有谁知道我为什么会遇到这些问题
谢谢
保罗
更新: 对不起,我的错误,这不是任务队列调用的一部分,它是设置任务队列调用的代码。通话时间平均约为 59.5 秒(感谢 Alex 指出这一点)。查看跟踪(感谢 Alex),似乎延迟出现在数据存储区调用中。它可以快到 21 毫秒或超过 59000 毫秒,这太长了。我刚刚再次检查了日志,过去 24 小时内没有任何异常,所以这可能是 48 小时的故障。
根据这个问题,听起来 CancellationException
意味着您正在达到 TaskQueue 作业必须完成执行的 10 分钟超时。
您的日志是否显示这些请求 运行 在它们抛出异常之前持续了多长时间(例如 stackdriver 显示此延迟任务 运行 902 毫秒)?
查询 table 的 96 条记录应该没问题,但是如果不能看到您的任务代码是什么样子,就很难确定。
您可以将您的任务拆分成更小的 'sub-tasks' 并让子任务在返回前启动下一个子任务。
编辑:您也可以尝试去这里 https://console.cloud.google.com/traces/traces 查看您的请求花费时间的细分
我有一个运行 TaskQueue 作业的 Java GAE 实例。在过去的 48 小时内,我收到了很多 CancellationException 错误(24 小时内大约有 36 个)。
错误总是发生在对特定 table 的 DataStore 查询中。查询在索引列 projectId 上,查询是复合 OR(即 projectId = -1 或 projectId = 23)。整个table有问题有96条记录,任何一个查询最多会拉回20条记录。
有谁知道我为什么会遇到这些问题
谢谢 保罗
更新: 对不起,我的错误,这不是任务队列调用的一部分,它是设置任务队列调用的代码。通话时间平均约为 59.5 秒(感谢 Alex 指出这一点)。查看跟踪(感谢 Alex),似乎延迟出现在数据存储区调用中。它可以快到 21 毫秒或超过 59000 毫秒,这太长了。我刚刚再次检查了日志,过去 24 小时内没有任何异常,所以这可能是 48 小时的故障。
根据这个问题,听起来 CancellationException
意味着您正在达到 TaskQueue 作业必须完成执行的 10 分钟超时。
您的日志是否显示这些请求 运行 在它们抛出异常之前持续了多长时间(例如 stackdriver 显示此延迟任务 运行 902 毫秒)?
查询 table 的 96 条记录应该没问题,但是如果不能看到您的任务代码是什么样子,就很难确定。
您可以将您的任务拆分成更小的 'sub-tasks' 并让子任务在返回前启动下一个子任务。
编辑:您也可以尝试去这里 https://console.cloud.google.com/traces/traces 查看您的请求花费时间的细分