我有一个WCF服务主机。我对wc的要求很高。我的主人,经过一段时间后表现出内存充满的问题。重复这个问题。当我打开Web服务帮助页面时,会显示以下错误:
内存门检查失败,因为可用内存(1398493184 bytes)小于总内存的5%。结果,服务将 不适用于传入请求。要解决此问题,请减少 机器上的负载或调整值 minFreeMemoryPercentageToActivateService上 serviceHostingEnvironment配置元素。
来自WCF主机的我的web.config如下:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnable="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceHostingEnvironment minFreeMemoryPercentageToActivateService="1"/>
</behavior>
</serviceBehaviors>
,主机web.config是
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IPaperService" clouseTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisojnMode="StringWildcard" maxBufferSize="1000000000" maxBufferPoolSize="1000000000" maxReceivedMessageSize="100000000" messageEncoding="text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="1000000000" maxArrayLength="1000000000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorthmSuite="Default" />
<security>
</binding>
如何解决我的问题?
答案 0 :(得分:38)
尝试在this answer
中建议的wCF主机的yourweb.config中将minFreeMemoryPercentageToActivateService设置为0答案 1 :(得分:16)
而不是更改WCF配置值, 尝试知道哪个进程工作集内存为高,请尝试查看它是否真的需要
Powershellcommand>> get-process | Sort-Object WS -desc >c:\process.txt
还要知道哪个processid指向IIS App pool
cmd.exe>> %systemroot%\system32\inetsrv\AppCmd.exe list wp
通过在配置中允许零,这可能能够激活可能破坏服务状态的内存不可用的原因 - 这可能不是那么直接的性质:(
我的2美分......
答案 2 :(得分:3)
在某些情况下,更改web.config不是一个选项。在我们的例子中,我们通过将服务器的内存从8GB增加到16GB来解决这个问题。
答案 3 :(得分:2)
如果系统的RAM占用率超过95%,则会出现此问题,请停止某些不需要的进程并再次尝试调用该服务。
答案 4 :(得分:1)
我使用MS 2008 R2 Web服务器上的资源监视器来确定SQL Server消耗了超过29 gig的可用32。
在阅读了其他关于分配给SQL的内存量的意见后,我将最大内存设置为24 gigs。可以在SQL Server属性的“内存”选项卡上找到最大服务器内存限制。
答案 5 :(得分:0)
答案 6 :(得分:0)
上述错误可能有3-4种可能的原因:
1)SQL使用了大部分服务器空间,并且您没有在SQL Server设置中指定“最大服务器内存限制”
2)您的系统RAM已被完全使用。某些程序使用了大部分RAM来运行它们。
3)IIS应用程序池未回收。
4)您尚未指定“ minFreeMemoryPercentageToActivateService” Web服务Web.Config文件中的标记。您可以在 Web.Config如下。
例如:minFreeMemoryPercentageToActivateService =“ 0”
答案 7 :(得分:0)
在我们的例子中,我们遇到了内存泄漏。我建议修改代码,而不是应用 web.config 调整。