具有Javascript运行时的Azure函数使读取httptrigger请求的速度变慢

时间:2018-10-24 09:21:52

标签: azure azure-functions azure-functions-runtime

我正在将数据(4MB)作为简短请求发送到具有JavaScript运行时和HttpTrigger的azure函数。在函数中,我解压缩数据并处理它。在函数中运行代码需要6到7秒的时间,但是请求的往返时间几乎需要60秒。我了解上载请求会花费一些时间,但我没想到会有如此大的延迟。我该如何调试时间?

这不是冷启动问题,因为请求始终需要60秒。

1 个答案:

答案 0 :(得分:0)

据我所知,Azure Functions还不支持附加App Insights Profiler,但是您可以添加自己的遥测。

如果在Azure函数运行时中花费时间,这不一定会有所帮助,但是如果瓶颈在解压缩/处理过程中,则可能会有所帮助:

https://docs.microsoft.com/en-us/azure/application-insights/application-insights-custom-operations-tracking?toc=/azure/azure-monitor/toc.json#outgoing-dependencies-tracking

自定义依赖项跟踪的一般方法是:

  • 调用TelemetryClient.StartOperation(扩展)方法,该方法填充相关性所需的DependencyTelemetry属性以及其他一些属性(开始时间戳,持续时间)。
  • 在DependencyTelemetry上设置其他自定义属性,例如名称和您需要的任何其他上下文。
  • 进行依赖项调用并等待它。
  • 完成操作后,请使用StopOperation停止操作。
  • 处理异常。

文档示例:

public async Task RunMyTaskAsync()
{
    using (var operation = telemetryClient.StartOperation<DependencyTelemetry>("task 1"))
    {
        try 
        {
            var myTask = await StartMyTaskAsync();
            // Update status code and success as appropriate.
        }
        catch(...) 
        {
            // Update status code and success as appropriate.
        }
    }
}