在使用大文件分段上传的时候,每个段分成2M,后段代保存代码,
using (var stream = new FileStream(_hostingEnvironment.WebRootPath + videoFileName, FileMode.Create))
{
await formFile.CopyToAsync(stream);
}
当有几个用户上传的时候会报错:
warn: Microsoft.AspNetCore.Server.Kestrel[22] Heartbeat took longer than "00:00:01" at "03/02/2020 06:11:50 +00:00".
然后系统就开始卡了,请问一下这是什么原因?莫非是线程池用完了吗?
同时打开的线程数太多了,分块上传,每个块4M,同时几个用户在上传大文件的时候会出现这种情况。
有没有在同步方法中调用异步方法?上面的代码没有问题,建议提供更多代码
没有呀。全是异步的
搜了下,说 Heartbeat took 是心跳, 大概意思就是 心跳反射时间 长于1秒. 可能就是长了以后反复发确认之类的.
建议做好硬盘缓存, 每个文件块标明位置, 直接写硬盘文件对应位置上.