czf2505 2019-08-02 14:01 采纳率: 0%
浏览 589
已结题

WCF 百万级数据获取 并发量达到3个,CPU就突然飙到80以上,然后程序超时?

1 楼主用WCF做的是一个获取数据,生成excel文件的服务.大致的思路就是用EF结合LINQ获取数据,然后生成excel。

2 数据量小的时候代码运行没有问题

3 只有一个或者两个请求百万级数据,程序运行没有问题

4 但是当并发数达到3个以后,而且请求的也是百万级数据的时候,CPU占用就超过80了,并发数两个的时候都没有到30,这CPU飙升速度太异常了。下面是获取数据的主要代码

var exportList = from dataMain in dataList
join fina in finaNonameList on dataMain.FnId equals fina.Id into aa
from a in aa.DefaultIfEmpty()
join dep in _depList on dataMain.DeptId equals dep.Id into bb
from b in bb.DefaultIfEmpty()
join pub1 in pubList1 on dataMain.BusTypeId.ToString() equals pub1.Value
into cc
from c in cc.DefaultIfEmpty()
join pub2 in pubList2 on dataMain.OpeBusinessesId.ToString() equals
pub2.Value into dd
from d in dd.DefaultIfEmpty()
orderby dataMain.Id descending
select new ExportRePayInformationViewModel
{
Id = dataMain.Id,
FnId = dataMain.FnId,
SubContractNum = dataMain.SubContractNum,
InnerCode = dataMain.InnerCode,
InnerName = dataMain.InnerName,
};

        data = exportList.ToList();
        return data;    


百万级数据量的时候,代码运行到这里“ data = exportList.ToList();”,CPU占用就马上超过80了,然后程序就超时啦。跪求高手指点一二
作者:czf2505
来源:CSDN
原文:https://blog.csdn.net/czf2505/article/details/98183051
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-08-02 14:13
    关注
    tolist操作需要大量的内存,如果你内存不够,可能会造成问题。
    你可以返回 IEnumerable<ExportRePayInformationViewModel> 代替 List<ExportRePayInformationViewModel> 
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题