这是优化后的线程数
Posted: Thu Jan 30, 2025 9:32 am
下面我们看到该方法访问实体框架,甚至进一步了解实体框架如何从数据库获取数据。因此系统等待数据库提供数据并阻塞线程直到它提供数据。这可能是问题的原因。
为了解决这个问题,我们检查控制器操作并尝试了解是什么阻塞了应用程序中的线程。分析表明,有多个对数据库存储库的调用不是异步执行的。
同步调用和异步调用之间的区别相对容易理解。对于同步调用,请求在线程中处理并阻塞该线程,直到调用被完全处理。如果向数据库发出大量耗时较长的请求,则线程将需要相应较长的时间才能返回结果。
异步调用的行为略有不同。当某个操作耗时较长时,线程就被“释放”,可以开始处理下一 贷款人员电子邮件列表 个请求。然后,对数据库的查询在后台运行,一旦完成,就会检索结果并将其返回给调用者。这允许几个线程在合理的时间内处理大量请求。
在这种特殊情况下,代码看起来像这样(不是真正的应用程序代码,仅用于演示):
经过研究,我重写了代码,并将所有存储库方法切换为异步代码。这意味着线程不再被阻塞并且可用于进一步的请求:
经过这些更改后,性能提高了很多倍
这些结果表明问题已经成功解决。
您想了解更多关于 adesso 世界中令人兴奋的话题吗?那么请看一下我们之前发布的博客文章。
丹尼尔·扎内金 (Daniil Zaonegin) 的图像
作者 丹尼尔·扎内金
Daniil Zaonegin 是斯图加特 adesso 业务银行部门的一名软件开发人员。他在那里从事后端和前端开发工作。他的重点是 ASP.NET Core、.NET 和容器化。 Daniil 拥有超过 15 年的 IT 经验,并持有各种 Microsoft 认证(例如“MSCA Web 应用程序”和“MCSD 应用程序构建器”)。
在我们的技术博客中,我们将带您踏上令人兴奋的 adesso 世界之旅。您可以在我们之前的博客文章中找到其他有趣的主题。
您想定期收到我们的 adesso 博客更新吗?然后只需订阅我们的时事通讯,您将通过电子邮件方便地收到我们技术博客的最新文章。
为了解决这个问题,我们检查控制器操作并尝试了解是什么阻塞了应用程序中的线程。分析表明,有多个对数据库存储库的调用不是异步执行的。
同步调用和异步调用之间的区别相对容易理解。对于同步调用,请求在线程中处理并阻塞该线程,直到调用被完全处理。如果向数据库发出大量耗时较长的请求,则线程将需要相应较长的时间才能返回结果。
异步调用的行为略有不同。当某个操作耗时较长时,线程就被“释放”,可以开始处理下一 贷款人员电子邮件列表 个请求。然后,对数据库的查询在后台运行,一旦完成,就会检索结果并将其返回给调用者。这允许几个线程在合理的时间内处理大量请求。
在这种特殊情况下,代码看起来像这样(不是真正的应用程序代码,仅用于演示):
经过研究,我重写了代码,并将所有存储库方法切换为异步代码。这意味着线程不再被阻塞并且可用于进一步的请求:
经过这些更改后,性能提高了很多倍
这些结果表明问题已经成功解决。
您想了解更多关于 adesso 世界中令人兴奋的话题吗?那么请看一下我们之前发布的博客文章。
丹尼尔·扎内金 (Daniil Zaonegin) 的图像
作者 丹尼尔·扎内金
Daniil Zaonegin 是斯图加特 adesso 业务银行部门的一名软件开发人员。他在那里从事后端和前端开发工作。他的重点是 ASP.NET Core、.NET 和容器化。 Daniil 拥有超过 15 年的 IT 经验,并持有各种 Microsoft 认证(例如“MSCA Web 应用程序”和“MCSD 应用程序构建器”)。
在我们的技术博客中,我们将带您踏上令人兴奋的 adesso 世界之旅。您可以在我们之前的博客文章中找到其他有趣的主题。
您想定期收到我们的 adesso 博客更新吗?然后只需订阅我们的时事通讯,您将通过电子邮件方便地收到我们技术博客的最新文章。