J'ai un hôte de service WCF. Ma demande de wc est élevée. Mon hôte, après une période de temps présente un problème de mémoire est plein. Ce problème se répète. Lorsque j'ouvre la page d'aide du service Web, cette erreur s'affiche:
La vérification des portes de mémoire a échoué car la mémoire disponible (1398493184 octets) représente moins de 5% de la mémoire totale. Par conséquent, le service ne sera pas disponible pour les demandes entrantes. Pour résoudre ce problème, réduisez la charge sur la machine ou ajustez la valeur de minFreeMemoryPercentageToActivateService sur l'élément de configuration serviceHostingEnvironment.
Mon web.config de l'hôte WCF est le suivant:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnable="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceHostingEnvironment minFreeMemoryPercentageToActivateService="1"/>
</behavior>
</serviceBehaviors>
et l'hôte web.config est
<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>
Comment puis-je résoudre mon problème?
Essayez de définir minFreeMemoryPercentageToActivateService à 0 dans yourweb.config pour WCF Host, comme suggéré dans cette réponse
au lieu de changer la valeur de configuration WCF, essayez de savoir quel processus mémoire de l'ensemble de travail élevé, essayez de voir que si cela nécessite vraiment
Powershellcommand>> get-process | Sort-Object WS -desc >c:\process.txt
Pour savoir également quel processid pointe vers IIS App pool
cmd.exe>> %systemroot%\system32\inetsrv\AppCmd.exe list wp
En autorisant zéro dans la configuration, cela pourrait être en mesure d'activer peut corrompre l'état du service pour la mémoire raison non disponible - qui pourrait ne pas être si simple dans la nature :(
Mes 2 cents ...
Il y a des situations où changer le web.config n'est pas une option. Dans notre cas, nous avons résolu ce problème en augmentant la mémoire du serveur de 8 Go à 16 Go.
Ce problème se produit si la RAM de votre système est occupée à plus de 95%, arrêtez certains processus indésirables et essayez à nouveau d'appeler le service.
J'ai utilisé le moniteur de ressources sur mon serveur Web MS 2008 R2 pour déterminer que SQL Server consommait plus de 29 Go sur mes 32 disponibles.
Après avoir lu les opinions des autres sur la quantité de mémoire à allouer à SQL, j'ai défini la mémoire maximale à 24 Go. La limite de mémoire maximale du serveur se trouve dans l'onglet mémoire de vos propriétés SQL Server.
RECYCLER VOTRE PISCINE D'APPLICATION