IIS: จะทราบได้อย่างไรว่าเวลาที่ช้านั้นเกิดจากการเชื่อมต่อเครือข่ายที่ช้า


10

ตามที่http://support.microsoft.com/kb/944884 "เมื่อมีการส่งการตอบสนองขนาดใหญ่หรือการตอบสนองขนาดใหญ่ไปยังไคลเอนต์ผ่านการเชื่อมต่อเครือข่ายที่ช้าค่าของเขตเวลาที่ใช้อาจมากกว่าที่คาดไว้"

ฉันมีสถานการณ์ที่ลูกค้าจะพูดว่า "ฉันส่งคำขอไปยังเว็บเซิร์ฟเวอร์ของคุณเวลา 10:03:24 และใช้เวลา 20 วินาทีทำไม" ฉันสามารถเห็นสิ่งนี้ได้ใน IIS ที่บันทึกไว้เช่นกัน แต่โมดูล ASP.NET ของเซิร์ฟเวอร์บันทึกว่าใช้เวลา 100 มิลลิวินาทีและตัวนับ CPU และดิสก์ต่ำ

ฉันสงสัยว่าเป็นเพราะการเชื่อมต่อเครือข่ายช้า ฉันจะพิสูจน์สิ่งนี้ได้อย่างไร

ปรับปรุง:

1) สิ่งเหล่านี้เป็นคำขอ SOAP Web Service ดังนั้นจึงไม่มีกราฟิกฝังตัวเพียง HTTP POST ที่มีหน้า XML เดียวของผลลัพธ์

2) นอกจากนี้ฉันได้ทำซ้ำสิ่งนี้โดยการควบคุมปริมาณความเร็วเครือข่ายในฝั่งไคลเอ็นต์และอาการก็เหมือนกันทุกประการ

3) ปัญหาเป็นระยะ ๆ หมายความว่าคำขอเดียวกันโดยปกติจะเร็วสำหรับลูกค้า แต่ช้าในบางครั้ง ฉันไม่สามารถทำซ้ำตัวเองนอกเหนือจากการควบคุมปริมาณเครือข่าย การบันทึก ASP.NET ของเซิร์ฟเวอร์แสดงว่ารวดเร็วเสมอ แต่การบันทึก IIS จะแสดงให้ช้าลงเมื่อไคลเอนต์แจ้งว่าช้า

4) ฉันมีสิทธิ์เข้าถึงเซิร์ฟเวอร์เท่านั้นและจำเป็นต้องให้ข้อมูลมากที่สุดแก่ลูกค้าเพื่อให้พวกเขายอมรับว่าปัญหาไม่ได้อยู่บนเซิร์ฟเวอร์และรู้ว่าการบันทึก / เครื่องมือใดที่จะทำงานบนไคลเอนต์เพื่อค้นหาสาเหตุของปัญหา


คำขอเหล่านี้มีการเปิดดูหน้าเว็บปกติที่ต้องใช้การดึงกราฟิกและอื่น ๆ หรือไม่ หรือว่าพวกเขาเป็นแบบสอบถามอัตโนมัติที่กลับมาเพียงหน้าเดียว? เรากำลังวัดเวลาในการโหลดหน้าเว็บหรือเวลาตอบสนองคำขอ HTTP เดียวหรือไม่
David Schwartz

คำตอบ:


4

ฉันมีสถานการณ์ที่ลูกค้าจะพูดว่า "ฉันส่งคำขอไปยังเว็บเซิร์ฟเวอร์ของคุณเวลา 10:03:24 และใช้เวลา 20 วินาทีทำไม" ฉันสามารถเห็นสิ่งนี้ได้ใน IIS ที่บันทึกไว้เช่นกัน แต่โมดูล ASP.NET ของเซิร์ฟเวอร์บันทึกว่าใช้เวลา 100 มิลลิวินาทีและตัวนับ CPU และดิสก์ต่ำ

ฉันสงสัยว่าเป็นเพราะการเชื่อมต่อเครือข่ายช้า ฉันจะพิสูจน์สิ่งนี้ได้อย่างไร

มันเริ่มต้นด้วยมองหาหยดแพ็คเก็ตระหว่างเบราเซอร์ของลูกค้าของคุณและทุกแหล่งที่มาของภาพ / สคริปต์ / html สำหรับหน้าเว็บดังกล่าวข้างต้น หากคุณพบว่าแพ็กเก็ตมีความสอดคล้องลดลงคุณก็รู้ว่ามีบางสิ่งในเครือข่ายที่ต้องได้รับการแก้ไข ... แม้ว่าจะเป็นเพียงลิงค์ที่มีการโอเวอร์โหลด การหยดของแพ็คเก็ตไม่ใช่เหตุผลเดียวสำหรับเครือข่ายที่ช้า แต่เป็นแหล่งที่พบบ่อยที่สุดในประสบการณ์ของฉัน แหล่งข้อมูลอื่นอาจเป็นพร็อกซีหรือเอ็นจิ้นแคชที่กำหนดค่าไม่ถูกต้อง น่าเศร้าที่ฉันไม่สามารถแสดงรายการผู้ร้ายที่เป็นไปได้ทั้งหมดที่นี่

อย่างไรก็ตามผู้คนมักตำหนิเครือข่ายเมื่อข้อเท็จจริงเกี่ยวกับความเร็วนั้นอยู่ในการควบคุมของตัวเอง คำอธิบายที่เป็นไปได้:

  • สมมติว่า HTML สำหรับหน้านั้นเขียนได้ไม่ดีและโหลดสคริปต์ที่ต้องการในลำดับที่ไม่ถูกต้องดังนั้นทั้งหน้าจึงแสดงผลช้าแม้ว่าทรัพยากรเกือบทั้งหมดจะเข้าแทนที่
  • หน้ากำลังรอทรัพยากรที่ไม่มีอยู่จริงและหมดเวลาขณะรอ
  • สคริปต์อยู่ในการวนรอบช้าที่บล็อกชั่วขณะหนึ่ง
  • เอ็นจิ้นแคชใช้เวลาในการส่งภาพนาน
  • CGI ของคุณค้นหาบางอย่างในฐานข้อมูลและการค้นหาตัวเองช้า
  • คุณกำลังใช้Google Analyticsซึ่งทำให้ช้าลงเนื่องจากวิธีการเขียนเพจ

ฉันสามารถไปต่อได้ แต่ประเด็นก็คือคุณต้องทำตามเหตุผลที่แน่ชัดว่าทำไมหน้าเว็บถึงช้าลงด้วยตัวคุณเอง เครือข่ายที่มีข้อบกพร่องเป็นไปได้ อาจเป็นไปได้ว่าปัจจัยอื่น ๆ มีส่วนทำให้ประสิทธิภาพช้า

หากต้องการวินิจฉัยเพิ่มเติม:

  • หากหน้าเว็บโหลดได้ดีใน Firefox แท็บเครือข่ายในFirebugคือเพื่อนของคุณ (กดF12จากนั้นไปที่แท็บเครือข่ายแล้วโหลดหน้าซ้ำ) Firebug ช่วยให้คุณมีไดอะแกรมน้ำตกที่ดีสำหรับวิธีการโหลดหน้าเว็บและความล่าช้าน้ำตก Firebug
  • หากหน้าเว็บโหลดได้ดีใน Chrome คุณสามารถทำสิ่งที่คล้ายกันได้ (กดCntlShiftIคลิกบนแท็บเครือข่ายและโหลดหน้าซ้ำ)โครเมียม
  • หากหน้าได้รับการสนับสนุนใน IE เท่านั้น (btw, อัปยศในการพัฒนา HTML ของคุณ) ทางออกที่ดีที่สุดของคุณคือการเริ่มต้นการโหลดองค์ประกอบของหน้า ASP แต่ละรายการเหล่านั้นด้วยcurlจนกว่าคุณจะพบสิ่งที่ดูช้าเกินไปแล้วหาสาเหตุว่าองค์ประกอบนั้น ๆ ช้า

BTW, ตัวอย่าง Chrome และ Firefox ใช้แบบสอบถาม CGI จาก Debian.org ; นี่เป็นตัวอย่างที่ดีของความล่าช้าที่มาจากการค้นหา CGI

เมื่อทุกอย่างล้มเหลวคุณสามารถรับ.pcapจากwiresharkและเรียกใช้ผ่านtcptrace; อย่างไรก็ตามในขณะtcptraceที่เก่งในการวิเคราะห์การทิ้งแพ็กเก็ตไม่มีการรับประกันว่าคุณสามารถแยกปัญหาได้ด้วยtcptraceตัวเอง ดูคำตอบนี้สำหรับข้อมูลเกี่ยวกับการใช้tcptraceการวินิจฉัย


ดูการอัปเดตของฉันด้านบน ในขณะที่ข้อมูลของคุณมีประโยชน์มากในกรณีทั่วไปฉันไม่คิดว่าจะใช้กับที่นี่ หน้านั้นช้าเป็นระยะ ๆ เท่านั้นและอาการจะทำซ้ำได้เฉพาะเมื่อฉันเค้นเครือข่ายที่ฝั่งไคลเอ็นต์
Jon

แผนภูมิน้ำตกใน firefox / chrome สนับสนุนการดำเนินการโพสต์ http และ curl ... ฉันไม่แน่ใจว่าคุณสรุปได้อย่างไรว่าข้อมูลไม่ได้ใช้ แต่ดูเหมือนว่ามันไม่เกี่ยวข้องกับแอปพลิเคชันเต็มรูปแบบของเครื่องมือกับโดเมนปัญหา .
Mike Pennington

Firefox / chrome เป็นเครื่องมือฝั่งไคลเอ็นต์ ฉันมีสิทธิ์เข้าถึงเซิร์ฟเวอร์เท่านั้นและฉันไม่สามารถทำซ้ำได้โดยใช้ไคลเอ็นต์ของตัวเอง ฉันต้องบอกจากเซิร์ฟเวอร์เท่านั้นหากคำขอเฉพาะช้าเนื่องจากปัญหาเครือข่าย ที่เหลือการจับแพ็คเก็ต แต่ที่หนักเกินไปที่จะปล่อยให้อยู่ในการผลิต (พิจารณา 1 ใน 10,000 คำขออาจจะช้า)
Jon

ในฐานะวิศวกรเครือข่ายที่มีอายุต่ำกว่า 15 ปีฉันขอแนะนำด้วยความเคารพว่าคุณไม่สามารถวิเคราะห์ปัญหาการบริการ HTTP ฝั่งไคลเอ็นต์จากเซิร์ฟเวอร์เพียงอย่างเดียวได้ คุณมีข้อมูลไม่เพียงพอ (ซึ่งเห็นได้ชัดว่าเป็นข้อสรุปของคุณด้วย ... อย่างไรก็ตามคุณดูเหมือนจะไม่เปิดรับกับความเป็นจริง :-)
Mike Pennington

หากการจับแพ็คเก็ตที่เซิร์ฟเวอร์สามารถวินิจฉัยปัญหาเครือข่าย (เช่นผ่านการดู TCP ช้า) มันไม่สมเหตุสมผลที่จะคาดหวังว่าเครื่องมือ / ตัวบันทึกน้ำหนักเบาอาจแสดงผลเหมือนกันหรือไม่?
Jon

0

ผลที่สุดของบทความ kb 944884 คือเวลาจริงที่ใช้ในการตอบสนองอาจจะไม่ถูกต้องในบันทึก นั่นคือเหตุผลที่บทความระบุเวลาเครือข่าย

หากอาการสามารถทำซ้ำได้ฉันจะทำการตรวจจับแพ็คเก็ตที่ฝั่งเซิร์ฟเวอร์ (และควรเลือกที่ฝั่งไคลเอ็นต์ด้วย) เพื่อดูเวลาจริงที่การเชื่อมต่อได้รับการยอมรับจากลูกค้า


ขอบคุณ แต่มันไม่สามารถทำซ้ำได้นอกจากความเร็วของการควบคุมปริมาณเครือข่ายและการจับแพ็คเก็ตนั้นหนักเกินไปที่จะใช้ในการผลิต
Jon

0

ความล่าช้า 20 วินาทีอาจเกิดจาก IIS ต้องรีสตาร์ทเป็น w3wp.exe ซึ่งจะเข้าสู่โหมดสลีปเมื่อไม่ได้ใช้งาน


1
คุณสามารถปรับปรุงคำตอบนี้โดยตอบ "วิธีการบอก" w3wp.exe การเข้าสู่โหมดสลีปนั้นไม่เกี่ยวข้องในกรณีของฉันเนื่องจากฉันปิดใช้งานพฤติกรรมนั้น แต่สิ่งนี้สามารถช่วยผู้อื่นได้
Jon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.