Select the product you need help with
ช่วงชิงงานบน ประสิทธิภาพ และเมื่อคุณทำการเรียกใช้บริการเว็บจากโปรแกรมประยุกต์ ASP.NET การชะงักงันหมายเลขบทความ (Article ID): 821268 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้ เนื้อหาบนหน้านี้อาการเมื่อคุณทำการเรียกใช้บริการเว็บจากโปรแกรมประยุกต์ที่ Microsoft ASP.NET คุณอาจพบช่วงชิงงานบน ประสิทธิภาพ และการชะงักงัน อาจรายงานไคลเอนต์ที่ ร้องขอหยุดการตอบสนอง (หรือ "แฮงค์") หรือใช้เวลานานมากสำหรับการดำเนินการ ถ้ามีการล็อกตายสงสัย ขั้นตอนอาจนำกลับมาใช้ คุณอาจได้รับข้อความต่อไปนี้ในบันทึกเหตุการณ์ของโปรแกรมประยุกต์
" System.InvalidOperationException:
ยังไม่มีเธรดที่ว่างเพียงพอในวัตถุ ThreadPool เพื่อให้เสร็จสมบูรณ์แบบ
การดำเนินการ" " HttpException (0x80004005): การร้องขอหมดเวลา
ออก สาเหตุปัญหานี้อาจเกิดขึ้นเนื่องจาก ASP.NET จำกัดจำนวน
เธรดตัวทำงานและความสมบูรณ์พอร์ตเธรดที่เรียกสามารถใช้สำหรับการดำเนินการ
การร้องขอ โดยทั่วไป การเรียกไปยังบริการบนเว็บใช้เธรดของผู้ปฏิบัติงานหนึ่งเมื่อต้องการเรียกใช้รหัสที่ส่งการร้องขอและหนึ่งเธรดพอร์ตเสร็จสมบูรณ์จะได้รับการติดต่อกลับจากการบริการเว็บ อย่างไรก็ตาม ถ้าการร้องขอถูกเปลี่ยนเส้นทาง หรือต้องการการรับรองความถูกต้อง การโทรอาจใช้เธรดตัวทำงานสองมากและสองเธรดพอร์ตเสร็จสมบูรณ์ ดังนั้น คุณสามารถ exhaust ThreadPool การจัดการเมื่อเรียกใช้บริการเว็บหลายที่เกิดขึ้นในเวลาเดียวกัน ตัวอย่างเช่น สมมติว่า ThreadPool ที่จำกัดมากถึง 10 เธรดของผู้ปฏิบัติงาน และว่า เธรดของผู้ปฏิบัติงาน 10 ทั้งหมดจะอยู่ในขณะนี้ใช้งานรหัสที่อยู่ระหว่างรอการติดต่อกลับเพื่อดำเนินการ การเรียกกลับสามารถไม่เคยปฏิบัติ เนื่องจากมีรายการใด ๆ ที่ทำงานที่จะถูกจัดคิวการ ThreadPool ถูกบล็อคจนกระทั่งเธรดกลายเป็นพร้อมใช้งาน แหล่งที่มีศักยภาพอื่นของการช่วงชิงงานบนพารามิเตอร์maxconnectionที่System.Net namespace ใช้เพื่อจำกัดจำนวนการเชื่อมต่อ อยู่ โดยทั่วไป ขีดจำกัดนี้ทำงานตามที่คาดไว้ อย่างไรก็ตาม ถ้าโปรแกรมประยุกต์จำนวนมากพยายามที่จะทำให้มาก การร้องขอไปยังที่อยู่ IP เดียวในเวลาเดียวกัน เธรดอาจจะต้องรอจนกว่า เชื่อมต่อที่มีพร้อมใช้งาน การแก้ไขเมื่อต้องการแก้ไขปัญหาเหล่านี้ คุณสามารถปรับแต่งพารามิเตอร์ต่อไปนี้ในแฟ้ม Machine.config ให้เหมาะสมกับสถานการณ์ของคุณ:
maxWorkerThreadsและmaxIoThreadsASP.NET ใช้การตั้งค่าการตั้งค่าคอนฟิกสองต่อไปนี้ เมื่อต้องการจำกัดจำนวนสูงสุดของเธรดของผู้ปฏิบัติงานและเธรดที่เสร็จสมบูรณ์ที่อยู่ ใช้:2 * maxWorkerThreads minFreeThreadsและminLocalRequestFreeThreadsASP.NET ยังประกอบด้วยการกำหนดค่าต่อไปนี้ ตั้งค่าที่กำหนดจำนวนเธรดตัวทำงานและความสมบูรณ์พอร์ตเธรด ต้องมีการเริ่มต้นการร้องขอระยะไกลหรือการร้องขอภายในเครื่อง: (maxWorkerThreads*หมายเลขของ Cpu) -minFreeThreads หมายเหตุ พารามิเตอร์minFreeThreadsและminLocalRequestFreeThreadsพารามิเตอร์จะไม่นัยคูณ ด้วยจำนวนของ CpuminWorkerThreadsเป็นของ ASP.NET การ 1.0 Service Pack 3 และ ASP.NET 1.1 ASP.NET ยังประกอบด้วยการตั้งค่าต่อไปนี้ตั้งค่าคอนฟิกที่กำหนดวิธี เธรดตัวทำงานหลายอาจมอบทันทีเพื่อให้บริการแบบรีโมท การร้องขอmaxconnectionพารามิเตอร์maxconnectionเป็นตัวกำหนดจำนวนการเชื่อมต่อสามารถทำได้ ที่อยู่ IP เฉพาะ พารามิเตอร์ปรากฏเป็นดังนี้:executionTimeoutASP.NET ใช้การตั้งค่าการตั้งค่าคอนฟิกต่อไปนี้เมื่อต้องการ ขีดจำกัดเวลาการดำเนินการร้องขอ:หมายเหตุ ถ้าคุณเพิ่มค่าของพารามิเตอร์executionTimeoutคุณอาจต้องปรับเปลี่ยนการ processModel responseDeadlockIntervalตั้งค่าพารามิเตอร์ คำแนะนำการตั้งค่าที่แนะนำในส่วนนี้อาจไม่ทำงานสำหรับ โปรแกรมประยุกต์ทั้งหมด อย่างไรก็ตาม ข้อมูลเพิ่มเติมต่อไปนี้อาจช่วยให้คุณ ทำการปรับปรุงที่เหมาะสมถ้า คุณทำหนึ่งเว็บบริการโทรไปยังที่อยู่ IP เดียวจากแต่ละหน้า ASPX Microsoft ขอแนะนำให้ คุณใช้การตั้งค่าคอนฟิกการตั้งค่าต่อไปนี้:
หมายเหตุ เมื่อคุณใช้การตั้งค่าคอนฟิกนี้ คุณสามารถเรียกใช้ได้สูงสุด 12 ASP.NET ขอต่อ CPU ในเวลาเดียวกันได้เนื่องจาก100-88 = 12 ดังนั้น 88 น้อย *N ผู้ปฏิบัติงาน เธรดและ 88 *N มีเธรดพอร์ตเสร็จสมบูรณ์ พร้อมใช้งานสำหรับอื่น ๆ ใช้ (เช่นการเรียกกลับในบริการเว็บ) ตัวอย่างเช่น คุณมีเซิร์ฟเวอร์ที่ มีตัวประมวลผลที่ 4 และไฮเปอร์เธรดดิง เปิดใช้งาน ขึ้นอยู่กับสูตรเหล่านี้ คุณจะต้องใช้ค่าต่อไปนี้สำหรับการ ตั้งค่าคอนฟิกที่กล่าวถึงในบทความนี้ นอกจากนี้ เมื่อคุณใช้การตั้งค่าคอนฟิกนี้ 12 การเชื่อมต่อจะพร้อมใช้งาน สำหรับแต่ละ CPU สำหรับแต่ละที่อยู่ IP สำหรับแต่ละ AppDomain ดังนั้น ในต่อไปนี้ เกิดสถานการณ์สมมติ การช่วงชิงงานบนเพียงเล็กน้อยมากขึ้นเมื่อกำลังรอการร้องขอ การเชื่อมต่อ และ ThreadPool ไม่หมด:
สถานะ นี้
การทำงานที่เกิดจากการออกแบบ ข้อมูลเพิ่มเติมถ้าคุณพบกับประสิทธิภาพและการช่วงชิงงานบนบน IIS 7.0 ร่วมกับ ASP.NET ไป Microsoft บล็อกต่อไปนี้: การใช้งานของเธรด ASP.NET ใน IIS 7.5, IIS 7.0 และ 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 ใน IIS 7.0
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
ข้อมูลอ้างอิงสำหรับข้อมูลเพิ่มเติม ไปเว็บไซต์ Microsoft Developer Network (MSDN) ต่อไปนี้: ปรับปรุงประสิทธิภาพของ ASP.NET
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
คุณสมบัติหมายเลขบทความ (Article ID): 821268 - รีวิวครั้งสุดท้าย: 6 กุมภาพันธ์ 2556 - Revision: 4.0
แปลโดยคอมพิวเตอร์ ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:821268
(http://support.microsoft.com/kb/821268/en-us/
)
| การแปลบทความ
|




กลับไปด้านบน








