簡體   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