it-swarm.com.de

WCF-Dienst mit vollem Speicherfehler (Speichergatterprüfung fehlgeschlagen, da der freie Speicherplatz) - So beheben Sie den Fehler

Ich habe einen WCF Service Host. Meine Anfrage von wc ist hoch. Mein Gastgeber zeigt nach einer gewissen Zeit ein Problem, dass das Gedächtnis voll ist. Dieses Problem wird wiederholt. Wenn ich die Webdienst-Hilfeseite öffne, wird folgender Fehler angezeigt:

Die Überprüfung der Speichergatter ist fehlgeschlagen, da der freie Speicher (1398493184 Byte) weniger als 5% des Gesamtspeichers ausmacht. Infolgedessen ist der Dienst für eingehende Anforderungen nicht verfügbar. Um dies zu beheben, reduzieren Sie entweder die Belastung des Computers oder passen Sie den Wert von minFreeMemoryPercentageToActivateService für das Konfigurationselement serviceHostingEnvironment an.

Meine web.config vom WCF-Host ist wie folgt:

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
  <serviceMetadata httpGetEnable="true"/>
  <serviceDebug includeExceptionDetailInFaults="false"/>
  <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="1"/>
</behavior>
</serviceBehaviors>

und der Host web.config ist

<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>

Wie kann ich mein Problem lösen?

26
Masoud Sadeg

Versuchen Sie, minFreeMemoryPercentageToActivateService in yourweb.config für WCF Host auf 0 zu setzen, wie in diese Antwort vorgeschlagen

39

versuchen Sie, anstatt den WCF-Konfigurationswert zu ändern, zu ermitteln, welcher Prozess Arbeitsspeicher hoch ist, und prüfen Sie, ob dies wirklich erforderlich ist

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

Um auch zu wissen, ob die Prozess-ID auf IIS App Pool verweist

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

Durch das Zulassen von Null in der Konfiguration kann dies möglicherweise den Status des Dienstes für nicht verfügbaren Speicher beschädigen. Grund :(

Meine 2 Cent ...

16
HydPhani

Es gibt Situationen, in denen das Ändern der web.config nicht möglich ist. In unserem Fall haben wir dies gelöst, indem wir den Arbeitsspeicher des Servers von 8 GB auf 16 GB erhöht haben.

3
mealexro

Dieses Problem tritt auf, wenn der RAM Ihres Systems zu mehr als 95% belegt ist, einige unerwünschte Prozesse beendet und versucht wird, den Dienst erneut aufzurufen.

2
Satya

Ich habe den Ressourcenmonitor auf meinem MS 2008 R2-Webserver verwendet, um festzustellen, dass SQL Server mehr als 29 Gigs meiner verfügbaren 32 verbraucht hat.

Nachdem ich andere Meinungen darüber gelesen habe, wie viel Speicher SQL zugewiesen werden soll, habe ich den maximalen Speicher auf 24 GB festgelegt. Das maximale Serverspeicherlimit finden Sie auf der Registerkarte Speicher in Ihren SQL Server-Eigenschaften.

1
MarcB

RECYCELN SIE IHREN APP-POOL

  1. Gehe zu IIS
  2. Wählen Sie Anwendungspool
  3. Suchen Sie den Anwendungspool, in dem Ihre Anwendung ausgeführt wird, und wählen Sie ihn aus
  4. Klicken Sie im rechten Bereich auf Recycle.

Siehe IIS hier

0
Shelclair