我正在尝试在.NET中创建性能测试,其中一个步骤是以定义的速度“调用”服务器,例如:持续每秒400次调用。
问题是运行服务器调用的长度不同于:10ms到100ms。
我的第一次尝试是使用Thread.Sleep
循环的简单方法,但是这给了我每秒250-600次调用的结果,具体取决于时刻和服务器响应:(
答案 0 :(得分:1)
我认为你需要每秒稳定的通话速率(也就是说,你需要每秒400次呼叫,尽可能在第二次均匀分配)。
在测试期间需要自适应延迟 - 如果服务器缓慢发送响应,则需要较少的延迟;当服务器速度很快时,您需要在呼叫之间有更多延迟。您可以跟踪过去的服务器响应时间,并根据尽可能接近400个呼叫/秒速率计算当前呼叫的延迟。它仍然会有所波动,但它会比简单的硬编码Thread.Sleep
好得多。
您需要记住,对于许多活动线程(取决于硬件资源),线程的睡眠持续时间也可能会波动。我不知道您对Thread.Sleep
的细微差别有多熟悉 - 您应该阅读this answer以了解这些限制,因为这可能会在安排测试呼叫时发挥作用。
答案 1 :(得分:0)
我认为考虑到需要模拟的所有线程内容,为函数实现负载和性能测试可能会很复杂。 您可以使用Visual Studio Load测试来实现此目的,它有向导可帮助您模拟所需的负载类型... 看一下这篇文章供您参考: https://msdn.microsoft.com/en-us/library/vstudio/dd293540(v=vs.110).aspx
请注意,对于LoadTest,您需要VS Ultimate版本......