我有一个带有一些依赖的函数(两个集合读取 - cosmosDB,一个存储读取 - 博客存储在热门 - 一个cosmosDB写入 - 偶尔)。
单独使用时功能运行良好,回复时间约为200至500毫秒。这些时间大部分都花在IO上,我使用promises来避免在IO时锁定CPU。
我正在使用Application Insights
使用250个用户加载和10分钟的持续时间对单个URL进行一些性能测试(与邮递员一样运行)。
结果非常糟糕:38秒平均响应时间,6.05 req / s。
我无法理解200ms请求如何变为38s请求,每秒只有6个请求。怎么会这样?
我在日志中填写了一些信息,以便我可以看到某些依赖项是否锁定了我的函数。如果出现以下情况,应用洞察的持续时间为17秒:
28/11/2017 11:56:53 - Trace
Function completed (Success, Id=373364d5-4bd0-4f75-b526-2bd50067d98a, Duration=17228ms)
Device type: PC
Severity level: Informational
28/11/2017 11:56:47 - Trace
Cliente já consultou esse item anteriormente
Device type: PC
Severity level: Informational
28/11/2017 11:56:47 - Trace
Enviando dados do ativo para o cliente
Device type: PC
Severity level: Informational
28/11/2017 11:56:46 - Trace
Validando dados do cliente
Device type: PC
Severity level: Informational
28/11/2017 11:56:46 - Trace
Buscando pelo item procurado
Device type: PC
Severity level: Informational
28/11/2017 11:56:45 - Trace
Buscando cliente na base de acessos diário do dia
Device type: PC
Severity level: Informational
28/11/2017 11:56:45 - Trace
Buscando cliente na base de clientes
Device type: PC
Severity level: Informational
28/11/2017 11:56:45 - Trace
Obtendo informações
Device type: PC
Severity level: Informational
28/11/2017 11:56:36 - Trace
Function started (Id=373364d5-4bd0-4f75-b526-2
正如您在日志中看到的那样,从"功能开始"到我的第一个日志(这是函数的第一行),它花了9秒。从我最新的日志到"功能完成"它花了6秒多。在这两个时刻发生了什么,我怎么能避免它们?
据我所知,问题与我制作的IO无关,因为日志之间的响应时间合理。)