繁体   English   中英

如何提高IIS池的性能?

[英]How to increase IIS pool performance?

我有这样的方法:

     [HttpPost]
     public async Task<ActionResult> ConvertWav(int id)
     {
       using (var c = new DbEntities())
           {
              var converter = new FFMpegConverter();
              //code which converting some files from the path which the take from the DB 
              //and put it in the local directory
           }
     }

这是一个简单的ASP.NET Web应用程序,可通过ID从数据库表中的ID转换文件。 该表还具有“ dest_path”和“ input_path”字段。 表仅包含本地文件的路径。 例如D:/example/file.mp3

但是,当它开始转换时,该转换器使用的CPU时间百分比很小。 少于所有功能的0.1%。 当我开始一些转换器操作(发送一些请求)时,它变得更少了。 在此处输入图片说明

我尝试使用Web Garden,但结果相同。 如何增加请求的CPU使用率? 完整代码: https//codeshare.io/7XMec

心理调试激活!

没有看到其余的代码,您的问题很可能是您在SQL Server中使用了缓冲I / O API。 这意味着FFMpeg进程到第一个字节的时间就是EntityFramework进程到最后一个字节的时间。 解决方案?

您需要替换所有EF并通过SqlFileStream类访问数据库。 然后,您需要将数据通过管道传输到FFMPeg进程中,而不是使用文件/字节数组。

看来您需要使用FFMpegConverter.ConvertLiveMedia方法而不是FFMpegConverter.ConvertMedia方法来实现此目的。 总的来说,您仍然会发现可能受I / O约束,而不是受CPU约束。

但是,将来,您应该为自己配置文件,以调试性能问题。

您对症状的解释是完全错误的。

通过使用这种异步操作并启动转换器,可以看到w3wp.exe几乎不消耗CPU资源,因为它只是等待该转换器任务完成。

同时,在ASP.NET中执行长时间运行的任务是一个糟糕的设计,因为该框架是为具有中等超时的简单快速任务而设计的。 诸如SignalR之类的框架可能是更好的选择。

Web Garden将为您提供帮助,但在高负载下却无济于事,就好像所有线程都在转换器上等待时一样,站点性能仍然很差,因为那时它无法轻易地旋转自由线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM