BLサービスとしてWCFサービスが用意されています。 サービスは混合転送モードであり、10種類以上のエンドポイントを持ち、BasicHttpBindingによってバインドされています。契約は異なり、すべて同じアドレスです。 サービスは、IIS-7上のアプリケーションプール上で実行されます。WCFサービスが最初の呼び出しでメモリ使用量が高くなる
サービスはうまくいきますが、最初の呼び出しの後でもWSDLを取得してもw3wp.exeのメモリ使用量は300メガになります。サービスメモリの使用量は引き続き増加し続けますすべてのサーバーの物理メモリ(98〜100%)。メモリの不足はありませんでしたが、このような状況では他のアプリケーションやサービスが遅くなるため、カップル日ごとに手動でアプリケーションプールを手動で更新する必要があります。 私は既にメモリプロファイリングツールを使用しようとしましたが、問題の原因を見つけることができませんでした。
誰でもこの問題が発生しましたか?はいの場合、あなたは何をしましたか?
追加情報:
- BLサービスはNHibernateは、 に基づいDALのフレームワークの上に配置され、我々はメモリリークがそこから発信され、既に除外しました。
設定ファイル
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> </appSettings> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime maxRequestLength="20000" requestLengthDiskThreshold="20000" /> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="DefaultServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="AnonymousBehavior"> </behavior> </endpointBehaviors> </behaviors> <bindings> <basicHttpBinding> <binding name="SecureBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="true" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536000" maxBufferPoolSize="524288000" maxReceivedMessageSize="65536000" transferMode="Buffered"> <readerQuotas maxDepth="20000000" maxStringContentLength="8192000" maxArrayLength="16384000" maxBytesPerRead="4096000" maxNameTableCharCount="16384000" /> <security mode="None"> <transport clientCredentialType="None"/> </security> </binding> </basicHttpBinding> </bindings> <services> <service name="BL.Services.MyService" behaviorConfiguration="DefaultServiceBehavior"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Security/Anonymous" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.IAnonymousClaimsService" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Domain/App" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.IAppService" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Domain/App" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.IAttachmentService" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Domain/Site" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.ISecurityService" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Domain/Transaction" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.ITransactionService" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Domain/ActiveDirectory" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.IActiveDirectoryService" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" bindingNamespace="Domain/Report" behaviorConfiguration="WithSecurityContextInspector" contract="BL.Services.Contracts.IReportService" /> <host> <baseAddresses> <add baseAddress="//MyService.svc" /> </baseAddresses> </host> </service> </services> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <defaultDocument> <files> <add value="MyService.svc" /> </files> </defaultDocument> </system.webServer> </configuration>
私はWCFのメモリに問題はありませんでした。 WCFの設定オプションの無数のドキュメントは、かなり貧弱なIMOです。決してその底に到達せず、私自身のリモーティングフレームワークを書いてしまったので、メモリ消費を抑えることができました。より良い解決策が見つかるといいですね。 – spender
あなたの設定はどのように見えますか?特にobjectItemsInGraphオプションなどの周りに?あなたは同時に走っていますか?いくつのアクティブなセッションなどを許可していますか?これらはすべて効果があります。 – Chris