背景:以前一个项目使用了netcore 2.1,并发大也扛住了,觉得不错,
最近新项目使用了netcore 3.1作为接口端
问题:现在接口部署在centos 7上面,接口运行一段时间后,会假死
什么是假死,我来描述一下
所有接口用了ActionFilter过滤,OnActionExecuting(接口执行中事件)能进来,数据库也能访问,
OnActionExecuted(执行后)就死活进不来,而且是所有接口,
这就导致了接口没有返回值,前端一直等待直至超时。
自查记录:
1、通过查看接口状态,发现接口卡了1200秒左右后又能正常访问了,如图,感觉所有接口都在等待似的
接口堵住时状态如下,一直在executing
2、一开始以为是部署到Linux的问题,后来在windows部署后也出现了一样的问题
3、接口假死时,swagger生成的静态接口页面能正常访问
求助:这个问题困扰了好多天了,不知各位是否有解决办法或者提供下排查思路
代码中有没有地方在同步方法中调用异步方法?
就一个记录日志,但这个日志类在之前netcore2.1项目中也使用过
@HumanJun: 建议提供对应的代码
像 async await 死锁问题,具体要看下代码