gpt4 book ai didi

c# - 负载测试服务器登录

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:06 25 4
gpt4 key购买 nike

我是一名没有测试经验的开发人员。

我目前正在研究如何对处理移动应用程序登录的服务器进行负载测试。用户通常在轮类开始时登录。因此,当每个人都想登录时,早上的负载会很重。我们遇到了一些服务器在高负载下崩溃的问题,我想复制这种行为来分析它。

我获得了之前开发的用于测试登录的应用程序的源代码,我可以在其中添加用户列表并让他们登录 x 次。它使用一个 backgroundWorker,但据我所知,它仍然只使用一个线程,并且请求将同步发送,因此不能准确表示生产中的实际负载?

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (IClient client in clientList)
{
RunTest(client);
}
}

如何修改它以更好地反射(reflect)实际使用情况?或者有没有更简单的方法来测试负载?

我研究过使用任务和 TPL。但我无法理解它。

如果我改为:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (IClient client in clientList)
{
Task.Factory.StartNew(() => RunTest(client));
}
}

这会“自动”启动一个新线程并管理它吗?

最佳答案

不,这是错误的backgroundWorker1_DoWork正在启动后台线程池线程,Task.Factory.StartNew(() => { ... }); 也是如此。称呼。据我所知,这样做毫无意义。

我会串行进行测试,为什么需要多线程呢?所以像这样:

private void RunLoadTests()
{
foreach (IClient client in clientList)
RunIsolatedTest(client));
}

RunIsolatedTest您可以添加负载测试的方法以及您想要的任何内容。这将确保每个客户端的测试都在同一个线程上运行(这不会让您准确了解该线程正在参与的其他操作,但它会比分离多个线程更好!)。然后,您可以根据需要查看 CPU 滴答或其他处理器统计信息。

希望对您有所帮助。

关于c# - 负载测试服务器登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22612979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com