分析 Microsoft Chat Bot 负载测试结果 (Application Insights)
Analysing Microsoft Chat Bot Load Test result (Application Insights)
这是其中一笔交易的详细信息(对于大多数交易,观察结果是相同的)。下面的屏幕截图是在 Application Insights 的性能选项下找到的 "End-to-End transaction details"。
交易的总持续时间约为 29.4 秒,在下面的时间轴和遥测屏幕截图中标记的第 1 步和第 2 步之间花费了约 26 秒。
时间线
遥测
有人可以帮助我了解第 1 步和第 2 步之间的差距,以及如何减少差距以提高性能。
正如您在 Telemetery 屏幕截图中还可以看到的那样,还打印了 MessagesController.cs
中提到的自定义跟踪消息(以红色突出显示)
[ResponseType(typeof(void))]
public virtual async Task<HttpResponseMessage> Post([FromBody] Activity activity)
{
var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("MessagesController POST",
Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning,
new Dictionary<string,string> { {"Activity Id", activity.Id} });
// check if activity is of type message
if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
{
telemetry.TrackTrace("MessagesController Type:Message",
Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning,
new Dictionary<string,string> { {"Activity Id", activity.Id} });
//var reply = activity.CreateReply(String.Empty);
//reply.Type = ActivityTypes.Typing;
//await context.SendResponse(reply);
await Conversation.SendAsync(activity, () => new EchoDialog());
是不是在执行完这一行后 - await Conversation.SendAsync(activity, () => new EchoDialog());某个队列中的消息然后在一段时间后被 EchoDialog 拾取?
提前致谢!
这是因为我创建了加载脚本。加载脚本正在为多个用户创建相同的对话 ID,因此检索对话记录需要时间。
这是其中一笔交易的详细信息(对于大多数交易,观察结果是相同的)。下面的屏幕截图是在 Application Insights 的性能选项下找到的 "End-to-End transaction details"。
交易的总持续时间约为 29.4 秒,在下面的时间轴和遥测屏幕截图中标记的第 1 步和第 2 步之间花费了约 26 秒。
时间线
遥测
有人可以帮助我了解第 1 步和第 2 步之间的差距,以及如何减少差距以提高性能。
正如您在 Telemetery 屏幕截图中还可以看到的那样,还打印了 MessagesController.cs
中提到的自定义跟踪消息(以红色突出显示)[ResponseType(typeof(void))]
public virtual async Task<HttpResponseMessage> Post([FromBody] Activity activity)
{
var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("MessagesController POST",
Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning,
new Dictionary<string,string> { {"Activity Id", activity.Id} });
// check if activity is of type message
if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
{
telemetry.TrackTrace("MessagesController Type:Message",
Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning,
new Dictionary<string,string> { {"Activity Id", activity.Id} });
//var reply = activity.CreateReply(String.Empty);
//reply.Type = ActivityTypes.Typing;
//await context.SendResponse(reply);
await Conversation.SendAsync(activity, () => new EchoDialog());
是不是在执行完这一行后 - await Conversation.SendAsync(activity, () => new EchoDialog());某个队列中的消息然后在一段时间后被 EchoDialog 拾取?
提前致谢!
这是因为我创建了加载脚本。加载脚本正在为多个用户创建相同的对话 ID,因此检索对话记录需要时间。