我在 Azure 门户中的 App Insights 中的未触发的函数
报告下看到此错误,这是异常消息:
SyncTriggers payload of length '225004' exceeds max length of '204800'. Reverting to minimal format.
令我惊讶的是,互联网上似乎以前没有见过这个异常消息。
我知道为什么会发生这种情况,因为我的服务有一百多个端点,而这个错误只发生在其中一个端点,因此它显然与该端点中的特殊功能有关。
并非每次通话都会发生这种情况。有时它可以工作 10 或 20 次,然后突然失败。当它失败时,它会使应用程序服务崩溃。我可以看到这一点,因为 Application Insights 中的后续日志项是 FunctionMetadataManagerLoadingFunctionsMetadata ,这看起来很像是一个启动事件。它运行了大约 10 次,这表明它一次又一次崩溃,或者更确切地说尝试恢复失败。
日志中没有任何与实际错误相关的内容。只是它在调用此网址 100 秒后放弃:https://api.openai.com/v1/chat/completions
The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing
这个问题不是关于“为什么调用 openai 失败?”。调用可能会失败,但这并不意味着我的应用服务变得无响应、崩溃和恢复失败 10 次。
失败的调用会打开一个流并产生响应,这很可能是导致该行为的原因,因为与函数中的其余代码相比,这是此代码的特殊之处。
这是我的代码:
await foreach (var token in api.Chat.StreamChatEnumerableAsync(new ChatRequest()
{
Model = Model.ChatGPTTurbo,
Temperature = 0.1,
MaxTokens = 1000,
Messages = messages
}
“api”是来自 this excellent package 的“OpenAIAPI”类.
这个错误是什么意思?为什么会出现?怎么解决?
(是的,我可以通过不流式传输响应来避免错误,但这是一个要求)
最佳答案
此问题的原因是连接泄漏。一些连接已打开(在本例中为 OpenAI)并且从未关闭。其他人都很好地关闭了。不久之后,这个错误就会开始发生。也许当连接稍后被自动垃圾收集时它又开始工作了。
我仍然不知道错误消息的确切含义,但问题的原因似乎显然是此连接泄漏,因为该泄漏已修复,现在问题已停止。
关于c# - 长度为 'X' 的 SyncTriggers 有效负载超出了最大长度 '204800' 。恢复为最小格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75799936/