पर उच्च मेमोरी उपयोग तक पहुंच रही है हमारे पास एक बीएल सेवा के रूप में डब्ल्यूसीएफ सेवा है। सेवा मिश्रित परिवहन मोड में है, इसमें 10 से अधिक भिन्न एंडपॉइंट हैं, बेसिकहट्प बाइंडिंग द्वारा बाध्य, विभिन्न अनुबंधों और उन सभी के लिए एक ही पता के साथ। सेवा आईआईएस -7 पर अपने आवेदन पूल पर चलता है।डब्ल्यूसीएफ सेवा पहली कॉल
समस्या यह है कि सेवा ठीक काम करती है, लेकिन पहली कॉल के बाद भी, डब्ल्यूएसडीएल प्राप्त करने के बाद, w3wp.exe का मेमोरी उपयोग सीधे 300 मेगा तक चला जाता है, सेवा मेमोरी उपयोग लगातार बढ़ता रहता है, सर्वर की सभी भौतिक स्मृति (98 - 100%)। हमें स्मृति अपवाद से बाहर नहीं मिला, लेकिन यह स्थिति अन्य अनुप्रयोगों और सेवा को धीमा कर देती है, इसलिए हमें दिनों के प्रत्येक जोड़े में मैन्युअल रूप से एप्लिकेशन पूल रीफ्रेश करने की आवश्यकता होती है। मैंने पहले ही मेमोरी प्रोफाइलिंग टूल का उपयोग करने की कोशिश की है और समस्या के कारण किसी भी लीड को नहीं मिला है।
क्या किसी को भी इस समस्या का सामना करना पड़ा? और यदि हां, तो आपने क्या किया?
अतिरिक्त जानकारी:
- बीएल सेवा NHibernate के आधार पर एक दाल ढांचे के ऊपर स्थित है, हम पहले से ही की संभावना से इनकार किया है स्मृति रिसाव वहाँ से होने वाले है।
कॉन्फ़िग फ़ाइल
<?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>
मुझे डब्ल्यूसीएफ के साथ मेमोरी के मुद्दे थे जो दूर जाने से इनकार कर दिया। डब्ल्यूसीएफ के लिए कॉन्फ़िगरेशन विकल्पों के असंख्य के आसपास दस्तावेज बहुत खराब आईएमओ है। इसके नीचे कभी नहीं मिला और अपना खुद का रिमोटिंग फ्रेमवर्क लिखना समाप्त कर दिया जो मुझे स्मृति खपत के नियंत्रण में वापस रखता था। आशा है कि आपको एक बेहतर समाधान मिलेगा। – spender
आपकी कॉन्फ़िगरेशन कैसी दिख रही है? विशेष रूप से ऑब्जेक्ट ITemsInGraph विकल्प आदि के आसपास? क्या आप एक साथ चल रहे हैं? आप कितने सक्रिय सत्र इत्यादि की अनुमति दे रहे हैं? इन सभी का प्रभाव है। – Chris