ฉันมีสถานการณ์ที่ลูกค้าจะพูดว่า "ฉันส่งคำขอไปยังเว็บเซิร์ฟเวอร์ของคุณเวลา 10:03:24 และใช้เวลา 20 วินาทีทำไม" ฉันสามารถเห็นสิ่งนี้ได้ใน IIS ที่บันทึกไว้เช่นกัน แต่โมดูล ASP.NET ของเซิร์ฟเวอร์บันทึกว่าใช้เวลา 100 มิลลิวินาทีและตัวนับ CPU และดิสก์ต่ำ
ฉันสงสัยว่าเป็นเพราะการเชื่อมต่อเครือข่ายช้า ฉันจะพิสูจน์สิ่งนี้ได้อย่างไร
มันเริ่มต้นด้วยมองหาหยดแพ็คเก็ตระหว่างเบราเซอร์ของลูกค้าของคุณและทุกแหล่งที่มาของภาพ / สคริปต์ / html สำหรับหน้าเว็บดังกล่าวข้างต้น หากคุณพบว่าแพ็กเก็ตมีความสอดคล้องลดลงคุณก็รู้ว่ามีบางสิ่งในเครือข่ายที่ต้องได้รับการแก้ไข ... แม้ว่าจะเป็นเพียงลิงค์ที่มีการโอเวอร์โหลด การหยดของแพ็คเก็ตไม่ใช่เหตุผลเดียวสำหรับเครือข่ายที่ช้า แต่เป็นแหล่งที่พบบ่อยที่สุดในประสบการณ์ของฉัน แหล่งข้อมูลอื่นอาจเป็นพร็อกซีหรือเอ็นจิ้นแคชที่กำหนดค่าไม่ถูกต้อง น่าเศร้าที่ฉันไม่สามารถแสดงรายการผู้ร้ายที่เป็นไปได้ทั้งหมดที่นี่
อย่างไรก็ตามผู้คนมักตำหนิเครือข่ายเมื่อข้อเท็จจริงเกี่ยวกับความเร็วนั้นอยู่ในการควบคุมของตัวเอง คำอธิบายที่เป็นไปได้:
- สมมติว่า HTML สำหรับหน้านั้นเขียนได้ไม่ดีและโหลดสคริปต์ที่ต้องการในลำดับที่ไม่ถูกต้องดังนั้นทั้งหน้าจึงแสดงผลช้าแม้ว่าทรัพยากรเกือบทั้งหมดจะเข้าแทนที่
- หน้ากำลังรอทรัพยากรที่ไม่มีอยู่จริงและหมดเวลาขณะรอ
- สคริปต์อยู่ในการวนรอบช้าที่บล็อกชั่วขณะหนึ่ง
- เอ็นจิ้นแคชใช้เวลาในการส่งภาพนาน
- CGI ของคุณค้นหาบางอย่างในฐานข้อมูลและการค้นหาตัวเองช้า
- คุณกำลังใช้Google Analyticsซึ่งทำให้ช้าลงเนื่องจากวิธีการเขียนเพจ
ฉันสามารถไปต่อได้ แต่ประเด็นก็คือคุณต้องทำตามเหตุผลที่แน่ชัดว่าทำไมหน้าเว็บถึงช้าลงด้วยตัวคุณเอง เครือข่ายที่มีข้อบกพร่องเป็นไปได้ อาจเป็นไปได้ว่าปัจจัยอื่น ๆ มีส่วนทำให้ประสิทธิภาพช้า
หากต้องการวินิจฉัยเพิ่มเติม:
- หากหน้าเว็บโหลดได้ดีใน Firefox แท็บเครือข่ายในFirebugคือเพื่อนของคุณ (กดF12จากนั้นไปที่แท็บเครือข่ายแล้วโหลดหน้าซ้ำ) Firebug ช่วยให้คุณมีไดอะแกรมน้ำตกที่ดีสำหรับวิธีการโหลดหน้าเว็บและความล่าช้า
- หากหน้าเว็บโหลดได้ดีใน Chrome คุณสามารถทำสิ่งที่คล้ายกันได้ (กดCntlShiftIคลิกบนแท็บเครือข่ายและโหลดหน้าซ้ำ)
- หากหน้าได้รับการสนับสนุนใน IE เท่านั้น (btw, อัปยศในการพัฒนา HTML ของคุณ) ทางออกที่ดีที่สุดของคุณคือการเริ่มต้นการโหลดองค์ประกอบของหน้า ASP แต่ละรายการเหล่านั้นด้วย
curl
จนกว่าคุณจะพบสิ่งที่ดูช้าเกินไปแล้วหาสาเหตุว่าองค์ประกอบนั้น ๆ ช้า
BTW, ตัวอย่าง Chrome และ Firefox ใช้แบบสอบถาม CGI จาก Debian.org ; นี่เป็นตัวอย่างที่ดีของความล่าช้าที่มาจากการค้นหา CGI
เมื่อทุกอย่างล้มเหลวคุณสามารถรับ.pcap
จากwiresharkและเรียกใช้ผ่านtcptrace
; อย่างไรก็ตามในขณะtcptrace
ที่เก่งในการวิเคราะห์การทิ้งแพ็กเก็ตไม่มีการรับประกันว่าคุณสามารถแยกปัญหาได้ด้วยtcptrace
ตัวเอง ดูคำตอบนี้สำหรับข้อมูลเกี่ยวกับการใช้tcptrace
การวินิจฉัย