Visual Studio Load CPU使用Json上下文参数飞涨

本文关键字:上下文 参数 Json 使用 Studio Load CPU Visual | 更新日期: 2023-09-27 18:18:25

我使用Visual Studio 2015来记录负载测试使用的WebPerformance测试。在初始记录之后,我可以同时运行20个用户,CPU使用率只有25%左右。然而,我正在测试的网站使用Json,所以为了使测试更真实,我为Json添加了一个自定义提取规则:

[DisplayName("JSON Extraction Rule")]
[Description("Extracts the specified JSON value from an object.")]
public class JsonExtractionRule : ExtractionRule
{
    [DisplayName("Name/path of attribute")]
    [Description("String to fetch the attribute from the Json Object.")]
    public string Name { get; set; }
    [DisplayName("Fetch 4 first characters only")]
    [Description("Set to true if only the first 4 characters of the attribute should be fetched.")]
    public Boolean fourFirstCharacters { get; set; }
    public override void Extract(object sender, ExtractionEventArgs e)
    {
        if (e.Response.BodyString != null)
        {
            var json = e.Response.BodyString;
            if (json.StartsWith("["))
            {
                json = "{'"array'":" + json + "}";
            }
            var data = JObject.Parse(json);
            if (data != null)
            {
                var attribute = data.SelectToken(Name).ToString();
                if (fourFirstCharacters)
                {
                    e.WebTest.Context.Add(this.ContextParameterName, attribute.Substring(0, 4));
                } else
                {
                    e.WebTest.Context.Add(this.ContextParameterName, attribute);
                }                   
                e.Success = true;
                return;
            }
        }
        e.Success = false;
        e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}", Name);
    }
}

我使用它从响应中提取几个Json属性,并使用上下文参数将它们添加到后续请求中。

在添加了几个提取之后,比如将一些上下文参数传递给请求,我的负载测试在只有5个同时用户的情况下达到100%的CPU使用率。

上述提取规则在WebPerformance测试中使用了大约20次,在任何单个响应上使用了0-5次。Json响应和请求大约有2k个字符长。最大的提取大约包含500个字符。

我可以理解,如果响应时间上升或类似的东西,更现实的Json被传递的结果。然而,我不明白为什么CPU使用率飞涨?请求的响应时间会影响负载测试的CPU使用率吗?

提取+上下文参数是一个坏的(在CPU使用的上下文中)在请求中实现Json的方式?是否有更聪明的方法可以节省CPU使用?

Visual Studio Load CPU使用Json上下文参数飞涨

大部分CPU使用似乎是由在验证规则中使用上述自定义Json提取引起的。我删除了它,因为验证不是关键的,一切都运行得更顺利。