web-dev-qa-db-ja.com

フルメモリエラーのWCFサービス(空きメモリが原因でメモリゲートチェックに失敗しました)-解決方法

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>

どうすれば問題を解決できますか?

26
Masoud Sadeg

this answer で提案されているように、WCFホストのyourweb.configでminFreeMemoryPercentageToActivateServiceを0に設定してみてください。

39

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セント...

16
HydPhani

Web.configの変更がオプションではない場合があります。このケースでは、サーバーのメモリを8GBから16GBに増やすことでこれを解決しました。

3
mealexro

この問題は、システムのRAMが95%以上占有されている場合、いくつかの不要なプロセスを停止し、サービスの呼び出しを再試行すると発生します。

2
Satya

MS 2008 R2 Webサーバーでリソースモニターを使用して、使用可能な32の内の29ギガ以上でSQL Serverが消費していることを確認しました。

SQLに割り当てるメモリの量に関する他の意見を読んだ後、最大メモリを24ギガに設定しました。サーバーの最大メモリ制限は、SQL Serverプロパティの[メモリ]タブで確認できます。

1
MarcB

アプリプールをリサイクルする

  1. IISに移動します
  2. アプリケーションプールを選択
  3. アプリケーションが実行されているアプリケーションプールを見つけて選択します
  4. 右側のパネルで[リサイクル]をクリックします。

IISこちら を参照

0
Shelclair