我在托管的WebAPI服务上运行300次用户负载10分钟[步骤加载每10秒添加10个用户]的负载测试:
CPU Intel E5-2665 @ 2.40 - 4 Core / RAM 16 GB / Windows 2012 R2 / IIS 8.5
我要上传的图片文件大小为500 KB,并使用Multipart / form-data将文件发布到WebAPI。
在WebAPI代码上,我使用await Request.Content.ReadAsMultipartAsync(provider)
来避免线程阻塞。
在机器配置上修改以处理突发负载。 <processModel autoConfig="false" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="15" minIoThreads="15" />
IIS队列长度设置为5000,单个工作进程[尝试多个,NUMA也为0]限制\连接超时180秒。
即使在用户数达到300之前,我开始收到波纹管错误,一旦达到300,错误就会增加。
Exception SocketException 26 An existing connection was forcibly closed by the remote host
Exception IOException 7 Unable to read data from the transport connection: The connection was closed
当添加的用户越来越少时,文件会在0.13秒内上传,但随着负载的增加,响应时间会急剧增加。
平均响应时间:5.72秒;
最短响应时间:0.13秒;
最长响应时间8.88秒。