天冬氨酸。 Net:测试并发性

时间:2015-05-09 21:48:00

标签: c# asp.net .net iis concurrency

我们有一个网站,公司必须上传zip文件,文件上传后,应用程序会检查数据库中的一些内容,然后进行一些插入。

问题是,鉴于高并发性,网站工作非常糟糕,在与基础架构团队交谈后,我们决定重新设计并重新开发asp .net Web应用程序。

因此,我们正在开发应用程序,为了避免我们遇到的并发问题,我想知道如何测试并发性(告诉很多人将文件上传到网站不是一种选择)和监控。 ..

这是我第一次做这样的事情,所以,我会欣赏想法,文章等。

2 个答案:

答案 0 :(得分:2)

简短而简单的答案是Jmeter或者例如NeoLoad。如果您拥有Ultimate版本,也可以考虑使用Visual Studio web tests

但是我个人只是从在C#中对此进行编码并与执行并行。不知道你的背景,但是因为那里有[C#]标签......

    private volatile int threads;

    [TestMethod]
    private void Main()
    {
        const int threadCount = 10;
        for (int i = 0; i < threadCount; i++)
        {
            ++threads;
            new Thread(LoadFile).Start();
        }
        while (threads > 0)
        {
            Thread.Sleep(10);
        }
    }

    private void LoadFile()
    {
        var watch = Stopwatch.StartNew();
        //todo: do POST call
        Console.WriteLine(watch.ElapsedMilliseconds);
        --threads;
    }

将此作为起点,这绝对不是完成/准备生产的东西。记录,计时累积,线程计数,用EventWaitHandle s替换volatile int ...

希望这有帮助。

答案 1 :(得分:0)

问题

你所面临的问题是指出一个更大的问题......你可以尝试使用单元测试和优化的方法来解决它,但这只是将问题彻底解决了......

从架构的角度来看,您需要一种新方法,开始集成更加面向服务的架构。根据您提供的信息,很明显您有一个Web应用程序试图承担太多责任。您需要开始将职责分配给不同的服务并分散负载。

解决方案

您不必立即处理主Web应用程序中的所有内容,并且尝试这样做将始终咬回来。

您无法控制在任何给定时刻上传文档的用户数量,但您可以管理发生问题的处理方。

每当用户上传文件,存储它,并将其添加到队列以由不同的服务处理时,因此从Web应用程序中添加已上载到队列的文档,然后是单独的服务,即独立运行可以按照您指定的速率处理此项目