Select the product you need help with
Konflikte, Leistungseinbußen und Deadlocks, wenn Sie Webdienste aus einer ASP.NET Anwendung aufrufenArtikel-ID: 821268 - Produkte anzeigen, auf die sich dieser Artikel bezieht Auf dieser SeiteProblembeschreibungWenn Sie Webdienste aus einer Microsoft ASP.NET Anwendung aufrufen, können Sie Konflikte, Leistungseinbußen und Deadlocks auftreten. Clients melden eventuell, dass Anforderungen mehr reagieren (oder "hängen") oder sehr lange dauern ausführen. Wenn ein Deadlock vermutet wird, kann der Arbeitsprozess wiederverwendet werden. Sie können die folgenden Meldungen im Ereignisprotokoll Anwendung angezeigt.
"System.InvalidOperationException:
Es sind nicht genügend freie Threads im ThreadPool-Objekt zum Abschließen der
der Vorgang." "HttpException (0 x 80004005): Request timed
Out." UrsacheDieses Problem kann auftreten, weil ASP.NET die Anzahl begrenzt
der Worker-Threads und Komplettierungsportthreads, mit denen ein Aufruf ausführen
Anforderungen. In der Regel verwendet ein Aufruf an einen Webdienst einen Arbeits-Thread zum Ausführen des Codes, der die Anforderung sendet und ein Komplettierungsportthread den Rückruf vom Webdienst empfangen. Wenn allerdings die Anforderung umgeleitet wird oder eine Authentifizierung benötigt, kann der Aufruf bis zu zwei Arbeitsthreads und zwei Completion-Port-Threads verwenden. Aus diesem Grund können Sie den verwalteten ThreadPool aufbrauchen, wenn mehrere Webdienstaufrufe gleichzeitig auftreten. Genommen Sie an, dass der ThreadPool auf 10 Arbeitsthreads beschränkt ist und dass alle 10 Arbeitsthreads gerade Code ausführen, die auf einen Rückruf zur Ausführung wartet. Der Rückruf kann nie ausgeführt, da alle Arbeitsaufgaben, die an den ThreadPool angereiht sind blockiert sind, bis ein Thread verfügbar wird. Eine andere ist mögliche Konfliktquelle Maxconnection -Parameters, der System.Net -Namespace verwendet, um die Anzahl der Verbindungen beschränken. Im Allgemeinen Diese Grenze funktioniert wie erwartet. Jedoch Wenn viele Anwendungen versuchen, viele machen Anforderungen an eine einzige IP-Adresse zur gleichen Zeit Threads eventuell warten eine verfügbare Verbindung. LösungUm diese Probleme zu beheben, können Sie die folgenden Parameter in der Datei Machine.config auf Ihre Situation anpassen optimieren:
MaxWorkerThreads und maxIoThreadsASP.NET verwendet die folgenden beiden Konfigurationseinstellungen Begrenzen Sie die maximale Anzahl von Arbeitsthreads und Abschlussthreads, die verwendet:2 * MaxWorkerThreads MinFreeThreads und minLocalRequestFreeThreadsASP.NET enthält außerdem die folgende Konfiguration Einstellungen, die bestimmen, wie viele Arbeitsthreads und Abschluss-Threads Port muss eine Remoteanfrage oder eine lokale Anforderung starten verfügbar sein: (MaxWorkerThreads*Anzahl der CPUs)-MinFreeThreads Hinweis Der Parameter MinFreeThreads und der Parameter minLocalRequestFreeThreads werden nicht implizit mit der Anzahl der CPUs multipliziert.minWorkerThreadsSeit ASP.NET 1.0 Servicepack 3 und ASP.NET 1.1 ASP.NET enthält außerdem die folgenden Konfigurationseinstellungen, die bestimmt, wie viele Worker-Threads können sofort an einem Remote-Dienst zur Verfügung gestellt werden Anforderung.maxConnectionDer Parameter Maxconnection bestimmt, wie viele Verbindungen hergestellt werden können, zu einem bestimmte IP-Adresse. Der Parameter wird wie folgt angezeigt:"executionTimeout"ASP.NET verwendet die folgenden Konfigurationseinstellungen Beschränken Sie die Ausführungszeit der Anforderung:Hinweis Wenn Sie den Wert des Parameters ExecutionTimeout erhöhen, müssen Sie auch die ProcessModel Ändern ResponseDeadlockInterval Parametereinstellung. EmpfehlungenDie Einstellungen, die in diesem Abschnitt empfohlenen funktioniert möglicherweise nicht für alle Anwendungen. Allerdings kann die folgende zusätzliche Informationen Sie helfen Nehmen Sie die entsprechenden Änderungen vor.If machen Sie einen Webdienstaufruf zu einer einzigen IP-Adresse von jeder ASPX-Seite, Microsoft empfiehlt, dass Sie die folgenden Konfigurationseinstellungen verwenden:
Hinweis Wenn Sie diese Konfiguration verwenden, können Sie maximal 12 ausführen. ASP.NET pro CPU gleichzeitig angefordert, da 100-88 = 12. Aus diesem Grund mindestens 88 *N Arbeitskraft Threads und 88 *N Komplettierungsportthreads sind für andere verfügbar wird (z. B. für Webdienst-Rückrufe) verwendet. Angenommen, Sie verfügen über einen Server mit vier Prozessoren mit Hyper-Threading aktiviert. Basierend auf diesen Formeln, verwenden Sie die folgenden Werte für die Konfigurationseinstellungen, die in diesem Artikel erwähnt werden. Auch wenn Sie diese Konfiguration verwenden, stehen 12 Verbindungen pro-CPU pro IP-Adresse für jede Anwendungsdomäne. Aus diesem Grund in der folgenden Szenario tritt sehr geringe Konflikte auf, wenn Anforderungen warten Verbindungen und der ThreadPool ist nicht erschöpft:
Status Dies
Verhalten ist beabsichtigt. Weitere InformationenWenn eine schlechte Leistung und Konflikte für IIS 7.0, zusammen mit ASP.NET auftreten, fahren Sie mit der folgenden Microsoft-Blogs: ASP.NET Thread Usage on IIS 7.5, IIS 7.0 und IIS 6.0
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
ASP.net hängt in IIS 7.0
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
InformationsquellenWeitere Informationen finden Sie in der folgenden Microsoft Developer Network (MSDN)-Website: Verbessern der Leistung von ASP.NET
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
EigenschaftenArtikel-ID: 821268 - Geändert am: Mittwoch, 6. Februar 2013 - Version: 1.0 Die Informationen in diesem Artikel beziehen sich auf:
Maschinell übersetzter Artikel Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten. Den englischen Originalartikel können Sie über folgenden Link abrufen: 821268
(http://support.microsoft.com/kb/821268/en-us/
)
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
| SPRACHE AUSWÄHLEN
|




Zum Anfang








