Αναγν. άρθρου: 821268 - Τελευταία αναθεώρηση: Κυριακή, 29 Μαΐου 2011 - Αναθεώρηση: 4.0 Διένεξη, κακή απόδοση και προβλήματα όταν κάνετε αιτήσεων υπηρεσίας Web από ASP.NET εφαρμογές
Σε αυτήν τη σελίδαΣυμπτώματαΌταν πραγματοποιείτε κλήσεις σε υπηρεσίες XML Web από μια ASP.NET
εφαρμογή, ενδέχεται να αντιμετωπίσετε ασυμφωνίας, κακή απόδοση και προβλήματα.
Οι υπολογιστές-πελάτες ενδέχεται να αναφέρει αιτήσεις να σταματήσει να ανταποκρίνεται (ή "κολλάει") ή να λάβει μια πολύ
πολύ χρόνο για να εκτελεστεί. Εάν υπάρχει υπόνοια σε αδιέξοδο, μπορεί να είναι διαδικασία εργασίας
ανακύκλωση. Ενδέχεται να λάβετε τα ακόλουθα μηνύματα στο αρχείο καταγραφής συμβάντων εφαρμογής.
"System.InvalidOperationException:
Δεν υπήρχαν αρκετά ελεύθερων νημάτων στο αντικείμενο έφυγε για την ολοκλήρωση της
η λειτουργία." "HttpException (0x80004005): το χρονικό όριο αίτησης
Out." ΑιτίαΑυτό το ζήτημα μπορεί να προκύψει επειδή ASP.NET περιορίζει τον αριθμό
εργαζόμενος νήματα και νήματα θύρας ολοκλήρωσης που μπορούν να χρησιμοποιούν μια κλήση για την εκτέλεση
αιτήσεις. Συνήθως, μια κλήση σε μια υπηρεσία Web χρησιμοποιεί ένα νήμα εργασίας για εκτέλεση κώδικα που αποστέλλει την αίτηση και νήματος θύρα μία ολοκλήρωσης λάβετε την επιστροφή κλήσης από την υπηρεσία Web. Ωστόσο, εάν η αίτηση είναι ανακατεύθυνση ή απαιτεί έλεγχο ταυτότητας, η κλήση μπορεί να χρησιμοποιήσει μέχρι δύο εργαζομένου και δύο νήματα θύρα ολοκλήρωσης. Επομένως, μπορεί να εξαντλήσει το διαχειριζόμενο Έφυγε κατά την ίδια στιγμή πολλαπλές κλήσεις της υπηρεσίας Web. Για παράδειγμα, ας υποθέσουμε ότι το νήμα είναι περιορισμένη νημάτων εργασίας 10 και όλοι 10 νήματα εργασίας αυτήν τη στιγμή εκτελείτε κώδικα που είναι σε αναμονή για επιστροφή κλήσης Για να εκτελεστεί. Η επιστροφή κλήσης μπορεί να εκτελέσει ποτέ επειδή οποιαδήποτε στοιχεία που είναι εργασίας στην ουρά του έφυγε αποκλείονται, μέχρι να γίνει ένα νήμα είναι διαθέσιμη. Μια άλλη πιθανή πηγή ασυμφωνίας είναι το MaxConnection που η παράμετρος που το System.NET χώρος ονομάτων χρησιμοποιεί για να περιορίσετε τον αριθμό των συνδέσεων. Γενικά, το όριο αυτό λειτουργεί όπως αναμένεται. Ωστόσο, εάν πολλές εφαρμογές, δοκιμάστε να κάνετε πολλά αιτήσεις σε μία μόνο διεύθυνση IP, την ίδια στιγμή, νήματα ενδέχεται να χρειαστεί να περιμένετε είναι διαθέσιμη μια σύνδεση. Προτεινόμενη αντιμετώπισηΓια να επιλύσετε αυτά τα προβλήματα, μπορείτε να συντονιστείτε τα εξής
Οι παράμετροι του αρχείου Machine.config για τη βέλτιστη προσαρμογή την περίπτωσή σας:
maxWorkerThreads και maxIoThreadsASP.NET χρησιμοποιεί τις ακόλουθες ρυθμίσεις παραμέτρων δύο Για να περιορίσετε το μέγιστο αριθμό νημάτων εργασίας και ολοκλήρωση νημάτων που είναι χρησιμοποιούνται:2 * maxWorkerThreads minFreeThreads και minLocalRequestFreeThreadsASP.NET περιέχει επίσης την ακόλουθη ρύθμιση παραμέτρων ρυθμίσεις για να καθορίσετε πόσα νήματα εργασίας και ολοκλήρωση θύρας νήματα πρέπει να είναι διαθέσιμη για να ξεκινήσετε μια απομακρυσμένη αίτηση ή μια τοπική αίτηση: (maxWorkerThreads*αριθμό των CPU)-minFreeThreads Σημείωση Το minFreeThreads η παράμετρος και η minLocalRequestFreeThreads η παράμετρος δεν σιωπηρά πολλαπλασιάζεται επί τον αριθμό των CPU.minWorkerThreadsΩς των ASP.NET 1.0 Service Pack 3 και ASP.NET 1.1, ASP.NET περιέχει επίσης την ακόλουθη ρύθμιση παραμέτρων που προσδιορίζει τον τρόπο μπορούν να γίνουν πολλά νήματα εργασίας αμέσως για υπηρεσία απομακρυσμένης η αίτηση.MaxConnection πουΤο MaxConnection που η παράμετρος καθορίζει πόσες συνδέσεις μπορεί να γίνει σε ένα συγκεκριμένη διεύθυνση IP. Η παράμετρος εμφανίζεται ως εξής:executionTimeoutASP.NET χρησιμοποιεί την ακόλουθη ρύθμιση παραμέτρων για Περιορισμός ο χρόνος εκτέλεσης αίτησης:Σημείωση Εάν αυξήσετε την τιμή της executionTimeout η παράμετρος, πρέπει επίσης να τροποποιήσετε το processModel responseDeadlockInterval ρύθμιση παραμέτρων. ΣυστάσειςΟι ρυθμίσεις που προτείνονται σε αυτήν την ενότητα ενδέχεται να μην λειτουργούν όλες οι εφαρμογές. Ωστόσο, οι ακόλουθες πρόσθετες πληροφορίες μπορεί να σας βοηθήσει να Κάντε τις κατάλληλες προσαρμογές.Εάν κάνετε μία κλήση υπηρεσίας Web σε μία μόνο διεύθυνση IP από κάθε σελίδα ASPX Η Microsoft συνιστά να χρησιμοποιήσετε τις ακόλουθες ρυθμίσεις παραμέτρων:
Σημείωση Όταν χρησιμοποιείτε αυτήν τη ρύθμιση παραμέτρων, μπορείτε να εκτελέσετε το πολύ 12 ASP.NET αιτήσεις ανά CPU ταυτόχρονα επειδή 100 88 = 12. Επομένως, τουλάχιστον 88 *N εργαζόμενος νήματα και 88 *N νήματα θύρας ολοκλήρωσης διαθέσιμο για άλλες χρήσεις (όπως για τις επιστροφές κλήσης υπηρεσίας Web). Για παράδειγμα, έχετε ένα διακομιστή με τέσσερις επεξεργαστές και hyperthreading ενεργοποιημένη. Βάσει αυτών των τύπων, θα χρησιμοποιήσετε τις ακόλουθες τιμές για το ρυθμίσεις παραμέτρων που αναφέρονται σε αυτό το άρθρο. Επίσης, όταν χρησιμοποιείτε αυτήν τη ρύθμιση παραμέτρων, 12 συνδέσεις είναι διαθέσιμες ανά CPU ανά διεύθυνση IP για κάθε AppDomain. Επομένως, με την ακόλουθη το σενάριο, πολύ μικρή διένεξη προκύπτει όταν αιτήσεων που αναμένουν για συνδέσεις και το νήμα έχει εξαντληθεί:
Κατάσταση Αυτό
η συμπεριφορά οφείλεται στη σχεδίαση. Περισσότερες πληροφορίες Εάν αντιμετωπίζετε κακή απόδοση και διένεξη στο IIS 7.0 με ASP.NET, ανατρέξτε στο ακόλουθο ιστολόγια Microsoft: ASP.Χρήση NET νήμα στο IIS 7.0 και 6.0 http://blogs.MSDN.com/tmarq/Archive/2007/07/21/ASP-NET-thread-Usage-on-IIS-7-0-and-6-0.aspx
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
Κολλάει ASP.NET στις υπηρεσίες IIS 7.0http://blogs.MSDN.com/webtopics/Archive/2009/02/13/ASP-NET-Hang-in-IIS-7-0.aspx
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
ΑναφορέςΓια περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη Microsoft
Τοποθεσία Web Developer Network (MSDN): http://msdn2.Microsoft.com/en-us/library/ms998549.aspx
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
Μηχανικά μεταφρασμένοΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης. Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:821268
(http://support.microsoft.com/kb/821268/en-us/
)
| Άλλοι πόροι Tοποθεσίες υποστήριξης
ΚοινότηταΆμεση λήψη βοήθειαςΜεταφράσεις άρθρων
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Επιστροφή στην αρχή
