首页 新闻 搜索 专区 学院

请教下linux .net core3.1 下too many open files 几个疑问

0
悬赏园豆:50 [待解决问题]

先说怀疑的对象:项目是插件式开发,有大量的loadAssembly。

  1. 这个错,到底指的是哪个超了,文件描述符数量还是句柄数量?
  2. ulimit -n 的数量为65535,我理解的是对应的文件描述符,可以发生错误的时候,使用lsof -n -u root | wc -l 查看数量并没有超。
  3. 所以是不是命令用错了,报错的时候数字都没有对的上。
一只小青蛙的主页 一只小青蛙 | 初学一级 | 园豆:10
提问于:2022-06-29 10:32
< >
分享
所有回答(2)
0

十有八九是代码问题,有没有在同步代码中调用 async 异步代码?参考博文 .NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长

dudu | 园豆:36499 (高人七级) | 2022-06-29 10:40

现在的问题就是不好定位,我看博客园之前是放到windows下重现,然后dump后分析出问题,linux下有好的办法定位这个问题吗

支持(0) 反对(0) 一只小青蛙 | 园豆:10 (初学一级) | 2022-06-29 13:25

@一只小青蛙: 建议检查一下代码中是否在调用 async 异步代码使用了 .Result 或者 Wait()

支持(0) 反对(0) dudu | 园豆:36499 (高人七级) | 2022-06-29 14:52

@dudu: 是指的这种不~
var resp = httpClient.PostAsync(requestUrl, new StringContent(postBody, Encoding.UTF8, "application/json")).Result;
var data = resp.Content.ReadAsStringAsync().Result;
if (resp.StatusCode != System.Net.HttpStatusCode.Created)
{
throw new Exception("无法获取token,错误原因:" + data);
}

支持(0) 反对(0) 一只小青蛙 | 园豆:10 (初学一级) | 2022-06-29 14:56

@一只小青蛙: 就是这种代码引起的,全部要改掉,不要存在任何侥幸心理

支持(0) 反对(0) dudu | 园豆:36499 (高人七级) | 2022-06-29 18:42
0

//安装工具
dotnet tool install dotnet-dump

//dump 内存文件
dotnet-dump collect

//分析内存文件
dotnet-dump analyze

文档: https://docs.microsoft.com/zh-cn/dotnet/core/diagnostics/dotnet-dump

czd890 | 园豆:12547 (专家六级) | 2022-06-30 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册