Excel批量導入占用CPU率高的問題


使用NPOI進行excel批量導入,在數據量較大的時候會出現一個問題:服務器變得越來越卡,CPU占用率超高。那么怎么解決這個問題呢。

1、首先查找占用CPU高的代碼。原以為使用反射和調用過多的方法會占用較高的CPU,但是通過注釋相關模塊,發現了導致CPU飆高的真正原因是DbConxt本身添加和修改模型的代碼:

DbContext.TeacherInfo.Add(TIModel);
DbContext.Set<TeacherInfo>().Attach(TIModel);
DbContext.Entry(TIModel).State = EntityState.Modified;

這兩行再普通不過的添加和修改模型的代碼,非常的耗費CPU,注意:這里沒有saveChange,只是添加和修改。在平時單個或者小批量數據的添加和修改沒什么感覺,但是對於大批量的添加和更改時,CPU的占用率就是升起來。所以對於大批量的導入,這種方式要慎用,還是最原始的Sql比較靠譜。

2、經過多方查找,除了查找代碼中比較消耗CPU的程序,在代碼出現死循環的時候CPU也會升高,原因就是:因為一直代碼一直循環,導致沒辦法切換線程去做別的事情,CPU會一直居高不下。那么在大批量數據導入的時候,雖然不是死循環,但是也會長時間的占用線程。解決的辦法就是在循環的時候,讓線程短暫的休息。

Thread.Sleep(10);//減少CPU的使用率

經過這兩步處理,cpu的占用率已經從原來的20+變成5~6了,基本上已經下來了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM