【问题标题】:How to increase max threads in ASP .NET Core 3.0 application如何增加 ASP .NET Core 3.0 应用程序中的最大线程数
【发布时间】:2020-03-18 03:28:31
【问题描述】:

我在 docker 容器中部署了一个 ASP .NET Core 3.0 Web api 应用程序。看起来可用于处理请求的最大线程数约为 240(因为它似乎在某些节点上在一段时间内达到最大值,与垃圾收集事件相关)。看起来这不是内存问题,因为只有大约 1/5 的配置内存在使用中。有没有办法增加最大线程数?我可以在 Startup.cs 中设置 ThreadPool.SetMaxThreads() 吗?

【问题讨论】:

  • 不要增加线程数,而是尝试分析您的应用程序并查看哪个线程被锁定,如果您正确使用async await,您将不必担心线程被锁定。由于同步 API,线程大多被锁定。
  • 线程由操作系统或服务器管理。在 IIS 中,您可以在相关应用程序池中设置最大工作进程数。
  • 它是一个运行 Kestrel 的 docker 镜像。

标签: c# asp.net-core threadpool


【解决方案1】:

我在 Startup.cs 中调用了 ThreadPool.SetMinThreads()。还有一个SetMaxThreads(),但这并没有增加线程数。文档链接:

https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreads

【讨论】:

  • 是的,很有趣。该页面显示“适用于 .Net Core 3.1”以及其他(靠近底部)。此页面上的信息适用于我的 .Net Core 应用程序。从链接中删除了视图参数。
猜你喜欢
  • 2020-05-20
  • 2010-09-13
  • 2020-07-18
  • 1970-01-01
  • 2017-12-29
  • 2020-02-16
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多