【问题标题】:Azure Web App Disk Queue for no reason无缘无故的 Azure Web App 磁盘队列
【发布时间】:2017-12-24 13:25:38
【问题描述】:

我有一个小型 Web API,其中一个控制器托管为 WebApp(横向扩展),但是在负载下我看到有一个磁盘队列

从控制器返回的数据来自 MemoryCache,不需要磁盘使用。 如果我通过 FTP 连接,LogFiles 或任何其他文件夹中没有新创建的内容。那么这个 Disk Queue 是从哪里来的呢? 会不会影响性能? (没有明显原因的 HTTP 队列,有多个实例,CPU 为 50%,内存甚至没有 20%)

【问题讨论】:

  • MemoryCache 中的数据从哪里来?缓存的内存占用是多少?难道你正在做磁盘 I/O 来获取这些数据?磁盘队列可能是有原因的,您只是不确定它是什么;)
  • @RickvandenBosch - 从 Sql 数据库,为了测试我使用单一路由,数据总是被缓存。我添加的另一件事是 Application Insights SDK,仅此而已。
  • 如果只有一个控制器,也许你可以分享一些(相关的)代码?
  • @RickvandenBosch 没什么可显示的,它只是一行 return _dataProvider.GetDogs(); 从 DB 或 MemoryCache 获取记录。在本地运行我可以看到 IIS 正在以 4MB/s 的速度写入磁盘,但我不确定是什么,并且不认为这会导致磁盘队列。

标签: azure azure-web-app-service


【解决方案1】:

那么这个磁盘队列是从哪里来的呢?

根据我的理解,当我们使用MemoryCache 时,它并不表示它没有磁盘 I/O。在处理一个程序时,并不表示所有数据都存储在物理内存中,其中一些数据将存储在virtual memory中。它应该是页面文件(pagefile.sys)。它需要从磁盘读取数据。在本地环境中,我们可以使用 microsfot 提供的 RAMMap 工具来了解 Windows 如何分配物理内存、在 RAM 中缓存了多少文件数据,或者内核和设备驱动程序使用了多少 RAM。

【讨论】:

  • RAM 使用率为 10% 时为什么还要使用虚拟内存?
  • 在我的选择中,这并不意味着如果 RAM 全部用于使用虚拟内存,我们可以获得更多关于 Why do we need virtual memory 的信息。
猜你喜欢
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 2021-02-09
  • 2017-04-11
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多