WCFサービスホストがあります。 wcからの私のリクエストは高いです。私のホストは、しばらくするとメモリがいっぱいになるという問題を示しました。この問題は繰り返されます。 Webサービスのヘルプページを開くと、次のエラーが表示されます。
空きメモリ(1398493184バイト)が総メモリの5%未満であるため、メモリゲートのチェックに失敗しました。その結果、サービスは着信要求に対して使用できなくなります。これを解決するには、マシンの負荷を減らすか、serviceHostingEnvironment構成要素のminFreeMemoryPercentageToActivateServiceの値を調整します。
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>
どうすれば問題を解決できますか?
this answer で提案されているように、WCFホストのyourweb.configでminFreeMemoryPercentageToActivateServiceを0に設定してみてください。
wCF構成値を変更する代わりに、どのプロセスworkingset memory highを知るようにしてください。本当に必要な場合は、
Powershellcommand>> get-process | Sort-Object WS -desc >c:\process.txt
また、どのプロセスIDがIISアプリプールを指しているかを知る
cmd.exe>> %systemroot%\system32\inetsrv\AppCmd.exe list wp
構成でゼロを許可することにより、これはアクティブになり、使用できないメモリの理由でサービス状態が破損する可能性があります-それは本質的にそれほど簡単ではありません:(
私の2セント...
Web.configの変更がオプションではない場合があります。このケースでは、サーバーのメモリを8GBから16GBに増やすことでこれを解決しました。
この問題は、システムのRAMが95%以上占有されている場合、いくつかの不要なプロセスを停止し、サービスの呼び出しを再試行すると発生します。
MS 2008 R2 Webサーバーでリソースモニターを使用して、使用可能な32の内の29ギガ以上でSQL Serverが消費していることを確認しました。
SQLに割り当てるメモリの量に関する他の意見を読んだ後、最大メモリを24ギガに設定しました。サーバーの最大メモリ制限は、SQL Serverプロパティの[メモリ]タブで確認できます。
アプリプールをリサイクルする
IISこちら を参照