Asp.net-Mvc
Azure 應用服務可用性損失。記憶體計數器 Page Reads/sec 處於危險水平
環境:Asp Net MVC 應用程序(.net framework 4.5.1)託管在 Azure 應用程序服務上,具有兩個實例。應用程序使用 Azure SQL 伺服器數據庫。此外,應用程序使用 MemoryCache (System.Runtime.Caching) 進行記憶體。
觀察結果:實例 RD0003FF1F6B1B 上的記憶體計數器 Page Reads/sec 處於危險級別 (242)。任何超過 200 的值都可能導致該實例上的任何應用程序出現延遲或故障。
“記憶體計數器頁面讀取/秒”是什麼意思?如何解決這個問題?
“記憶體計數器頁面讀取/秒”是什麼意思?
我們可以從這個部落格中得到答案。推薦的 Page reads/sec 值應低於90。較高的值表示記憶體不足和索引問題。
“Page reads/sec 表示每秒發出的物理數據庫頁面讀取數。此統計數據顯示所有數據庫中的物理頁面讀取總數。由於物理 I/O 成本高昂,您可以通過使用更大的數據記憶體、智能索引和更高效的查詢,或者通過更改數據庫設計來最大限度地降低成本。”
如何解決這個問題?
根據我的經驗,您可以嘗試在 App Service 中啟用本地記憶體。
您可以使用此應用設置為每個 Web 應用啟用本地記憶體:WEBSITE_LOCAL_CACHE_OPTION = 始終
預設情況下,本地記憶體大小為300 MB。這包括從內容儲存複製的 /site 和 /siteextensions 文件夾,以及任何本地創建的日誌和數據文件夾。要增加此限制,請使用應用設置WEBSITE_LOCAL_CACHE_SIZEINMB。您可以將每個 Web 應用程序的大小增加到最多2 GB (2000 MB) 。

