负载测试服务器登录

本文关键字:登录 服务器 测试 负载 | 更新日期: 2023-09-27 17:53:09

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

我目前正在调查如何加载测试一个服务器,处理从移动应用程序登录。用户通常登录在他们的工作班次开始。因此,在早上每个人都想登录的时候,会有很大的负载。我们遇到了一些服务器在高负载下崩溃的问题,我想复制这种行为来分析它。

我得到了以前开发的用于测试登录的应用程序的源代码,我可以在其中添加用户列表并允许他们登录x次。它使用了一个backgroundWorker,但是从我收集到的信息来看,它仍然只使用一个线程,请求将同步发送,因此不能准确地表示生产中的实际负载?

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

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

我已经研究过使用任务和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 tick或其他处理器状态。