【发布时间】:2013-05-08 16:58:03
【问题描述】:
我的小型 (x2) 云服务可以正常运行 4 到 6 天,但随后它变得无响应,需要通过 Azure 门户手动重新启动才能使其重新上线。
Windows 事件日志显示虚拟内存不足。 2-3 天后,我开始得到:
Windows 成功诊断出虚拟内存不足的情况。这 以下程序消耗最多的虚拟内存:WaIISHost.exe (3836) 消耗 3810709504 字节,CacheService.exe (1528) 消耗 823902208 字节,w3wp.exe (1728) 消耗 145485824 字节。
一段时间后服务开始失败(由于内存问题??):
应用程序:CacheService.exe 框架版本:v4.0.30319
描述:进程因未处理而终止 例外。异常信息: Microsoft.ApplicationServer.Caching.ConfigStoreException
堆栈:在 Microsoft.ApplicationServer.Caching.CustomProviderProxy+c_DisplayClass5.b_3(System.Object)
在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback,System.Object,布尔值)在 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
在 System.Threading.ThreadPoolWorkQueue.Dispatch() 在 System.Threading.ThreadPoolWaitCallback.PerformWaitCallback()
|http://schemas.microsoft.com/win/2004/08/events/event'>1026200x800000000000001138ApplicationRD00155D45A2AD应用程序: CacheService.exe 框架版本:v4.0.30319 描述: 该进程因未处理的异常而终止。
异常信息: Microsoft.ApplicationServer.Caching.ConfigStoreException
堆栈:在 Microsoft.ApplicationServer.Caching.CustomProviderProxy+c_DisplayClass5.b__3(System.Object)
在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback,System.Object,布尔值)在 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
在 System.Threading.ThreadPoolWorkQueue.Dispatch() 在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
最终 Http 请求开始失败:
工艺信息:
进程 ID:3344
进程名称:w3wp.exe
帐号名称:NT AUTHORITY\NETWORK SERVICE
异常信息:
异常类型:HttpException
异常消息:分页文件太小,无法完成此操作。 (HRESULT 例外:0x800705AF)在 System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
在 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
在 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, 异常 appDomainCreationException)
页面文件太小,无法完成此操作。 (HRESULT 异常:0x800705AF)
我不确定问题是虚拟内存配置得太低,还是内存使用率太高。 WaIISHost.exe 虚拟内存使用量看起来确实很高,但似乎稳定在 4.1 GB 左右。
我不知道为什么 WaIISHost.exe 需要这么多,因为 Run() 方法只是做非常简单的内务活动,例如每隔几分钟 ping 一次站点以保持应用程序在白天运行。
Azure 门户中的可用内存监控显示该服务在崩溃前的整个期间有 300-800MB 的可用内存。
任何想法是什么问题?如何将虚拟内存配置得更高?
【问题讨论】:
-
您显然有某种内存泄漏。您保留的任何变量(静态或其他)?日志?收藏?甚至可能是通过依赖注入框架创建的东西?同时,您总是可以编写一个简单的 PowerShell 脚本来每晚重新启动实例,直到您弄明白为止。
标签: azure memory-leaks virtual