因此,我已经在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。因此有时会发生,有时不会在负载测试期间发生。
因此,我只更新了进程的屏幕截图,当流利的迁移器开始运行其日志记录时,我看到许多线程被锁定/使用。
答案 0 :(得分:1)
在这个阶段,我要说您需要分析您的应用程序,并弄清楚代码的哪些区域占用CPU资源。过去,我使用过dotTrace这个突出显示的方法,这对于调用树来说是最昂贵的。
一旦您知道代码库的哪些区域效率最低,就可以开始对其进行重构,以使它们更高效。这可能只是更改一些小操作,添加查询缓存或使用分布式锁定。
我相信其他DLL显示CPU使用率的原因是因为您的代码调用方法位于这些DLL中。