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了,基本上已经下来了。

 

转载于:https://www.cnblogs.com/lldbj/p/8249712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值