我的遇到问题:
最近项目突然开始不正常,一直报如下第一张图里的错误,时不时会触发windows的错误报告,每个占25%cpu,有时候一会就会自动消失,有时候就会卡住,导致项目死掉,然后登到服务器上一看开了4个windows的错误报告,占100%cpu所有iis上的项目都无法使用,要把这些windows的错误报告进程结束掉,其它所有项目都可以正常使用了,但是那个报错的项目要重启应用池才能正常。
让我很奇怪的是,项目并没有进行任何更新,之前一直是好的,突然就这样了。
尝试了以下解决办法:
查看日志,查到了最近项目中调用的其它第三方公司的接口频繁报错,导致接口一直调着,所以限制了接口最大连接时间为20秒,但是无果,还是这样。
于是又看到说明是:
System.StackOverflowException 异常
但是,在代码里找了很久也没有找到问题。
后来又看到了每次服务器cpu满的时候都会有很多同样的连续的警告:
难道是数据库堵住了?
因为当初为了方便查询统计日志中的信息,数据都是存在数据库里的,错误信息也是存在数据库里的,最近接口狂报错,数遍库记录的量上去了,所以堵住了?
可是也不太可能啊,这个日志一分钟也就记几条啊。
所以现在不知道该从哪里下手去查这个问题了,一点头绪也没有。
递归层数太多,是不是递归查询出现循环引用或者查询深度太大?如果是treeview一类的东西,建议使用懒惰加载。
提供的信息不多,栈溢出异常,表现是内存问题,代码不够健壮,对异常情况没有处理。
将调用第三方接口的功能部分关闭之后就再也没有出现过这个错误了,出现这个错误估是由于第三方接口有改动,但未通知我们,会不会是调用的时候一直连接着,然后接口这部分栈溢出了?接口正常情况下不会有这种问题,所有调用第三方接口的部分都有try catch并且记录了Log日志。都是“远程服务器返回错误:500”,现在第三方已经在调试接口,但是如果以后真的碰到接口都堵住,应该如何解决呢?实在是想不出办法。接口都已经限制20秒,但是是访问的人比较多,接口一直调着。