所以我在 Azure(S2 计划)上托管了 asp.net core 2.2 Web 服务。问题是我的应用程序有时会获得很高的 CPU 使用率(几乎 99%)。我现在所做的 - 在 azure 上检查了进程资源管理器。我看到有很多进程正在消耗 CPU。也许有人知道这些进程消耗CPU是否可以?目前,我不知道它们来自哪里。也许他们在这里很正常。
简单介绍一下我的应用程序:目前,流量不多。一天 500-600 个请求。大多数请求用于通过查询记录、添加等方式与 MS SQL 进行通信。我也在使用 MS Websocket,但是当没有 WebSocket 客户端连接到 Web 服务时会出现高 CPU,所以我几乎不相信这是一个原因。我尝试使用 apache ab 进行负载测试,但没有任何模式,在一个请求的负载测试之后,我会得到高 CPU。所以有时会发生,有时不会在负载测试期间发生。
所以我只是更新了进程的屏幕截图,我看到很多线程在 fluent 迁移器开始运行其日志记录期间被锁定/使用。
更新* 我将从配置方法中删除流利的迁移器日志记录中间件。将与情况一起期待。
更新**
所以我删除了 FluentMigrator 的日志记录。到目前为止,我没有注意到任何超过 90% 的 CPU 使用率。
但是,我仍然很困惑。我的 CPU 使用率在旋转。是否是健康 CPU 使用情况图?另外,我尝试在 websocket 服务器上进行负载测试。我制作了一个脚本,每 100 毫秒从 6-7 个客户端调用 WebSocket 的一些函数。所以每 100 毫秒有 7 次来自不同客户端的 WebSocket 服务器调用,每个函数本身都会查询一些数据/插入(每个 WebSocket 函数大约有 3-4 次查询)。
我确实注意到,在 Azure S1 DTU 20 上,2 分钟后我退出了 SQL 池连接,如果我将 DTU 增加到 100,它可以正确处理 7 个客户端,而不会出现任何“无连接池”错误。所以第一个问题:它是正常的 CPU 旋转吗?第二:我是否应该在 DTU 10 Azure SQL 上使用这种负载测试收到“无 SQL 连接免费”的错误消息。我担心在单例 WebSocket 服务上创建范围服务时,我正在泄漏连接。这个话题太长了,也许我应该把它移到一个新的话题?
-