我们有一个网站,公司必须上传zip文件,文件上传后,应用程序会检查数据库中的一些内容,然后进行一些插入。
问题是,鉴于高并发性,网站工作非常糟糕,在与基础架构团队交谈后,我们决定重新设计并重新开发asp .net Web应用程序。
因此,我们正在开发应用程序,为了避免我们遇到的并发问题,我想知道如何测试并发性(告诉很多人将文件上传到网站不是一种选择)和监控。 ..
这是我第一次做这样的事情,所以,我会欣赏想法,文章等。
答案 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应用程序中添加已上载到队列的文档,然后是单独的服务,即独立运行可以按照您指定的速率处理此项目