หมายเลขบทความ (Article ID): 823764 - รีวิวครั้งสุดท้าย: 28 มกราคม 2554 - Revision: 5.0 ประสิทธิภาพการทำงานที่ช้าลงเกิดขึ้นเมื่อคุณคัดลอกข้อมูลไปยังเซิร์ฟเวอร์ TCP โดยใช้โปรแกรม Windows Sockets API
เนื้อหาบนหน้านี้อาการเมื่อคุณเรียกใช้โปรแกรมที่ใช้ api ของ Windows Sockets คุณอาจพบประสิทธิภาพการทำงานที่ช้าลงเมื่อคุณคัดลอกข้อมูลไปยังเซิร์ฟเวอร์ของ TCP ถ้าคุณทำการสืบค้นกลับของเครือข่าย ด้วย sniffer ในเครือข่ายเช่นการตรวจสอบเครือข่าย Microsoft, TCP server ส่งเซ็ก TCP ACK เมนต์สุดท้าย TCP เซ็กเมนต์ในกระแสข้อมูลข้อมูล TCP ในตัวจับเวลาตอบรับที่ล่าช้า (หรือเรียกอีกอย่างหนึ่งว่าการล่าช้า ACK เมอร์) โดยค่าเริ่มต้น สำหรับระบบปฏิบัติการ Windows ค่าสำหรับตัวจับเวลานี้คือ 200 มิลลิวินาที (ms) แบบกระแสข้อมูลทั่วไปสำหรับการส่งข้อมูล 64 กิโลไบต์ (KB) มีลักษณะคล้ายกับลำดับต่อไปนี้: Client->Server 1460 bytes Client->Server 1460 bytes Server->Client ACK Client->Server 1460 bytes Client->Server 1460 bytes Server->Client ACK .... Client->Server 1460 bytes Client->Server 1460 bytes Server->Client ACK-PUSH Client->Server 1296 bytes -> delayed ACK 200 ms สาเหตุปัญหานี้เกิดขึ้นเนื่องจากการทำงานของ Windows Sockets API และ Afd.sys architectural ปัญหานี้เกิดขึ้นหากเงื่อนไขต่อไปนี้ทั้งหมด:
การหลีกเลี่ยงปัญหาเมื่อต้องหลีกเลี่ยงปัญหานี้ ใช้อย่างใดอย่างหนึ่งในวิธีต่อไปนี้ วิธีที่ 1: ใช้ซ็อกเก็ตที่บล็อกปัญหานี้เกิดขึ้นกับบล็อกไม่ใช่ซ็อกเก็ตเท่านั้น เมื่อคุณใช้ซ็อกเก็ตที่บล็อก ปัญหานี้ไม่เกิดขึ้นเนื่องจาก Afd.sys ให้จัดการกับบัฟเฟอร์ของซ็อกเก็ตที่แตกต่างออกไป สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการบล็อก และ บล็อกไม่ใช่ซ็อกเขียนโปรแกรม ดูเอกสารประกอบของ Microsoft Platform SDKวิธีที่ 2: ทำให้ขนาดของบัฟเฟอร์ที่ส่งซ็อกเก็ตใหญ่กว่าขนาดของบัฟเฟอร์ที่ส่งโปรแกรมเมื่อต้องการปรับเปลี่ยนการบัฟเฟอร์ส่งซ็อกเก็ต ใช้ซ็อกเก็ต Windowsเรียกgetsockoptทำการตรวจสอบซ็อกเก็ตขนาดบัฟเฟอร์ที่ส่ง (SO_SNDBUF) ปัจจุบัน จากนั้น ใช้การsetsockoptทำงานกับการตั้งค่าที่ใช้ซ็อกเก็ตส่งบัฟเฟอร์ขนาด เมื่อเสร็จเรียบร้อยแล้ว ค่า SO_SNDBUF ต้องมีขนาดใหญ่กว่าขนาดของบัฟเฟอร์ส่งโปรแกรมน้อย 1 ไบต์ปรับเปลี่ยนการส่งเรียก หรือการWSASendการเรียกเพื่อระบุขนาดของบัฟเฟอร์มีขนาดเล็กกว่าค่า SO_SNDBUF น้อย 1 ไบต์ ในตัวก่อนหน้าอย่างในส่วน "สาเหตุ" ของบทความนี้ คุณสามารถปรับเปลี่ยนการsetsockoptเรียกค่าต่อไปนี้ วิธีที่ 3: ปรับเปลี่ยนการตั้งค่า TCP/IP บนเซิร์ฟเวอร์ TCPสิ่งสำคัญนี้ส่วน วิธีการ หรืองานประกอบด้วยขั้นตอนที่บอกให้คุณทราบวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีอย่างไม่ถูกต้อง ดังนั้น ให้แน่ใจว่า คุณทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม สำรองรีจิสทรีก่อนที่คุณแก้ไข แล้ว คุณสามารถคืนค่ารีจิสทรีหากเกิดปัญหา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูล และคืนค่ารีจิสทรี คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:322756
(http://support.microsoft.com/kb/322756/
)
วิธีการสำรองข้อมูล และคืนค่ารีจิสทรีใน Windows ปรับเปลี่ยนการตั้งค่า TCP/IP บนเซิร์ฟเวอร์ TCP เพื่อยอมรับการเซ็กเมนต์ TCP ขาเข้าทันที วิธีแก้ปัญหานี้ทำงานได้ดีในสภาพแวดล้อมที่มีการติดตั้งไคลเอนต์ที่ใหญ่พื้นฐาน และโดยที่คุณไม่สามารถเปลี่ยนแปลงลักษณะการทำงานของโปรแกรม สำหรับสถานการณ์สมมติที่ TCP เซิร์ฟเวอร์ระยะไกลที่เรียกใช้บนเซิร์ฟเวอร์ที่ใช้ Windows คุณต้องแก้ไขรีจิสทรีของเซิร์ฟเวอร์ระยะไกล สำหรับระบบปฏิบัติการอื่น ๆ ดูที่ส่วนเอกสารของระบบปฏิบัติการสำหรับข้อมูลเกี่ยวกับวิธีการเปลี่ยนเวลาตอบรับที่ล่าช้า บนเซิร์ฟเวอร์ที่รัน Windows 2000 ให้ทำตามขั้นตอนเหล่านี้:
วิธีที่ 4: การปรับเปลี่ยนพฤติกรรมบัฟเฟอร์ใน Afd.sys สำหรับบล็อกไม่ใช่ซ็อกเก็ตสิ่งสำคัญนี้ส่วน วิธีการ หรืองานประกอบด้วยขั้นตอนที่บอกให้คุณทราบวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีอย่างไม่ถูกต้อง ดังนั้น ให้แน่ใจว่า คุณทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม สำรองรีจิสทรีก่อนที่คุณแก้ไข แล้ว คุณสามารถคืนค่ารีจิสทรีหากเกิดปัญหา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูล และคืนค่ารีจิสทรี คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:322756
(http://support.microsoft.com/kb/322756/
)
วิธีการสำรองข้อมูล และคืนค่ารีจิสทรีใน Windows หมายเหตุรีจิสทรีคีย์นี้จะพร้อมใช้งานสำหรับ Windows Server 2003 Service Pack 1 และต่อมาเซอร์วิสแพ็คเท่านั้น
สถานะMicrosoft ยืนยันว่า ปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน"ใช้งาน" ข้อมูลอ้างอิง328890
(http://support.microsoft.com/kb/328890/
)
รายการรีจิสทรีใหม่สำหรับการควบคุมพฤติกรรมการยอมรับ TCP (ACK) ใน Windows XP และ ใน Windows Server 2003 ใช้กับ
แปลโดยคอมพิวเตอร์ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:823764
(http://support.microsoft.com/kb/823764/en-us/
)
| ทรัพยากรอื่นๆ ไซต์การสนับสนุนอื่นๆ
ชุมชนรับความช่วยเหลือเดี๋ยวนี้การแปลบทความ
|






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


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