36

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>

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

4

8 に答える 8

44

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

<system.serviceModel>
    <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="0"/>
</system.serviceModel>

編集 1: これは回避策を提供しますが、根本的な原因には対処しません。特定の状況に応じて、これで十分な場合とそうでない場合があります。

編集2:@radderzによるコメントで正しく指摘されているように、「「serviceHostingEnvironment」要素は「system.serviceModel」の子である必要があります」、MSDNのドキュメントを参照してください

于 2013-04-20T11:16:54.377 に答える
19

WCF 構成値を変更する代わりに、どのプロセスのワーキングセット メモリが高いかを調べ、本当に必要かどうかを確認してください。

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

また、どのプロセス ID が IIS アプリケーション プールを指しているかを知ることもできます。

cmd.exe>> %systemroot%\system32\inetsrv\AppCmd.exe list wp 

構成でゼロを許可することにより、これをアクティブ化できる可能性があり、メモリが利用できない理由でサービスの状態が破損する可能性があります-それは本質的にそれほど単純ではない可能性があります:(

私の2セント...

于 2014-02-18T15:44:37.167 に答える
3

web.config を変更できない場合があります。私たちの場合、サーバーのメモリを 8GB から 16GB に増やすことでこれを解決しました。

于 2014-06-12T08:55:23.893 に答える
3

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

于 2017-03-13T07:00:22.870 に答える
1

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

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

于 2015-02-03T22:24:18.377 に答える
0

私たちの場合、メモリ リークが発生しました。web.config の微調整を適用する代わりに、コードの改訂をお勧めします。

于 2021-01-19T12:04:15.990 に答える