2013-04-20 65 views
20

私はWCFサービスホストを持っています。 wcからの私の要求は高いです。私のホストは、一定の期間が過ぎるとメモリ不足の問題が発生した後に表示されます。この問題は繰り返されます。私は、Webサービスのヘルプページを開くと、このエラーが表示されます。空きメモリ(1398493184 バイト)総メモリの5%未満であるためフルメモリエラーのWCFサービス(空きメモリが原因でメモリゲートチェックに失敗しました) - 解決方法

メモリゲートは、失敗したチェック。その結果、サービスは着信要求には利用できなくなります。 これを解決するには、マシンの負荷を に減らすか、 serviceHostingEnvironment config要素の 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> 

どのように私は私の問題を解決することができますか?

+2

スクリーンショットとして挿入するのではなく、コードをコピーして貼り付けてください。 – Lemurr

+0

メモ: 'serviceHostingEnvironment'要素は、 '動作'ではなく 'system.serviceModel'の子である必要がありますスレッド@Andreaが提供) – Radderz

答えて

16

で提案されているように がどのプロセスのworkingSetメモリハイを知るようにしてください、その本当にかのことを見てみてください、代わりにWCFの設定値を変更するので、WCFホスト用yourweb.config 0にminFreeMemoryPercentageToActivateServiceを設定してみてくださいprocessidをは、IISアプリケーションプールに

cmd.exe>> %systemroot%\system32\inetsrv\AppCmd.exe list wp 
を指しているかどうかを知るためにも

Powershellcommand>> get-process | Sort-Object WS -desc >c:\process.txt 

が必要です自然界に存在しないので、まっすぐ進むことができ:(

私の2セント...

- configにゼロを可能にすることにより、

、これは利用できませんメモリのためのサービスの5月、破損状態を活性化することができる理由かもしれません

+2

+1根本原因の解決を推奨します。これは、おそらく一部のコードのバグによって引き起こされる高価なプロセスのメモリフットプリントを減らすか、利用可能なリソースを増やすことによって解決できます。 –

+0

'get-process' powershellのアプローチの後、次のステートメントを使用してより詳細なプロセス情報(*ウィンドウタイトル、ピーク使用量など)を特定することもできます。' get-process -name myprocess | Select-Object *> c:\ processdetail.txt' – SliverNinja

+2

これを0に設定しても何も破損することはありません。ページファイルではなく、使用可能な物理メモリ%を参照しています。物理メモリが過度にコミットされている密な環境では比較的正常です。サーバが仮想メモリ(ページファイルがいっぱい)がなくなった場合、サービスが正しく起動していない場合よりも大きな問題が発生します。 – Steven

2

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

1

私はSQL Serverは、私が設定SQLに割り当てるどのくらいのメモリ上の他の人の意見を読んだ後、私の利用できる32

の29以上のライブを消費していることを決定するために私のMS 2008 R2のWebサーバー上のリソースモニタを使用24ギガに最大メモリ。最大サーバーメモリの制限は、SQL Serverのプロパティの[メモリ]タブで確認できます。

1

この問題は、システムのRAMが95%を超えて占有されている場合に発生し、不要なプロセスを停止してサービスを再度呼び出そうとした場合に発生します。

+0

はい。この例外が発生したとき、私のRAMの使用量は16GBの約94%であることに気付きました。私の場合は、アプリケーションがメモリをリークしています。 –

関連する問題