ทำความเข้าใจกับสถานะเครือข่าย Chrome ที่“ Stalled”


172

ฉันมีบันทึกเครือข่ายต่อไปนี้ใน chrome:

บันทึกเครือข่าย

ฉันไม่เข้าใจสิ่งใดสิ่งหนึ่ง: สิ่งที่แตกต่างระหว่างแท่งสีเทาที่เติมและแท่งสีเทาใส


2
ฉันเห็นสิ่งนี้มากในสองสัปดาห์ที่ผ่านมา ฉันโหลด 125 รายการเมื่อฉันทำ shift-refresh ใน chrome ในบางครั้งไฟล์เหล่านั้น 3-4 ไฟล์จะติดค้างในสถานะ "Stalled" ไฟล์ทั้งหมดเป็นไฟล์. png การแก้ไขเพียงอย่างเดียวคือการปิดแท็บเปิดตารางอีกครั้งและเปิดเครื่องมือ dev อีกครั้ง ฉันได้ทำงานกับรหัสนี้มานานกว่าหนึ่งปีโดยไม่มีปัญหานี้และไม่มีการเปลี่ยนแปลงใด ๆ ที่ฉันเชื่อว่าจะทำให้เกิดพฤติกรรมดังกล่าวในไฟล์ png
Greg Grater

คำตอบ:


202

Google แสดงรายละเอียดของฟิลด์เหล่านี้ในส่วนการประเมินประสิทธิภาพเครือข่ายของเอกสาร DevTools

ข้อความที่ตัดตอนมาจากเวลาเครือข่ายทรัพยากร :

จนตรอก / ปิดกั้น

เวลาที่คำขอใช้เวลารอก่อนที่จะสามารถส่งได้ เวลานี้รวมเวลาที่ใช้ในการเจรจาพร็อกซี นอกจากนี้ในครั้งนี้จะรวมถึงเมื่อเบราว์เซอร์กำลังรอการเชื่อมต่อที่สร้างไว้แล้วเพื่อให้สามารถใช้งานได้อีกครั้งโดยปฏิบัติตามการเชื่อมต่อ TCP หกสูงสุดของ Chrome ต่อกฎดั้งเดิม

(หากคุณลืม Chrome มีลิงก์ "คำอธิบาย" ในคำแนะนำเครื่องมือโฮเวอร์และใต้แผง "เวลา")

โดยพื้นฐานแล้วเหตุผลหลักที่คุณจะเห็นนี้คือเพราะ Chrome จะดาวน์โหลดเพียง 6 ไฟล์ต่อเซิร์ฟเวอร์ในแต่ละครั้งและคำขออื่น ๆ จะถูกหยุดจนกว่าจะมีช่องเสียบการเชื่อมต่อ

นี่ไม่ใช่สิ่งที่จำเป็นต้องมีการแก้ไข แต่วิธีหนึ่งที่จะหลีกเลี่ยงสถานะจนตรอกคือการกระจายไฟล์ข้ามชื่อโดเมนและ / หรือเซิร์ฟเวอร์หลาย ๆ ตัวทำให้CORSอยู่ในใจหากเหมาะสมกับความต้องการของคุณอย่างไรก็ตาม HTTP2 อาจเป็นตัวเลือกที่ดีกว่า ดำเนินต่อไป. การรวมทรัพยากร (เช่นการต่อข้อมูล JS และ CSS) สามารถช่วยลดปริมาณการเชื่อมต่อที่ค้างอยู่ได้


1
มีการ จำกัด ไฟล์ 6 ไฟล์สำหรับไฟล์โลคัลหรือไม่ ฉันพบรัฐจนตรอกเป็นครั้งคราวเมื่อโหลดหน้าจากfile:///C:/...
Ilya Kogan

@IlyaKogan ไม่ปรากฏว่ามีข้อ จำกัด 6 ไฟล์เมื่อโหลดจากระบบไฟล์ แต่ดูเหมือนจะเป็นเฟส "Stalled" ฉันเดาว่านี่จะเป็นเวลาที่ Chrome ใช้ในการเปิดไฟล์ในระบบไฟล์และขั้นตอน "การดาวน์โหลดเนื้อหา" แสดงเวลาที่ใช้ในการโหลดเนื้อหาลงในหน่วยความจำ
Alexander O'Mara

4
FYI: สำหรับ chrome 42 เวลาที่รออยู่ในคิวจะไม่ถูกนับเป็นส่วน Stalled / Blocking ตามเอกสารที่ระบุ แต่รวมอยู่ในยอดรวม เพื่อให้ได้เวลาในคิวให้ลบส่วนทั้งหมดออกจากผลรวม หวังว่าพวกเขาจะอัปเดตเอกสารของพวกเขา (หรือแก้ไขข้อผิดพลาด)
delrox

20
แต่ความแตกต่างระหว่างแถบสีขาวและสีเทาคืออะไร?
Kat

ไม่แนะนำให้ใช้การแบ่งโดเมนเพื่อให้เกิดความพร้อมกันสูงกว่า ใช้ HTTP2 แทน ดู: youtube.com/watch?v=yURLTwZ3ehk
Homer6

13

DevTools: [เครือข่าย] อธิบายแถบว่างที่มาก่อนคำขอ

สำรวจเพิ่มเติมและระบุว่าไม่มีความแตกต่างอย่างมีนัยสำคัญระหว่างช่วง Stalled และ Queuing ของเรา ทั้งสองถูกคำนวณจากเดลตาของการประทับเวลาอื่น ๆ แทนที่จะจัดเตรียมจาก netstack หรือ renderer


ปัจจุบันหากเรากำลังรอให้ซ็อกเก็ตใช้งานได้:

  • เราจะเรียกมันว่าหยุดทำงานหากมีการเจรจาพร็อกซีเกิดขึ้น
  • เราจะเรียกมันว่าเข้าคิวถ้าไม่ต้องการงาน proxy / ssl

6

https://developers.google.com/web/tools/chrome-devtools/network-performance/understanding-resource-timing

นี้มาจากเว็บไซต์อย่างเป็นทางการของ Chome-devtools และช่วย ที่นี่ฉันพูด:

  • การจัดคิว หากมีคำขอแสดงว่า:
    • คำร้องขอถูกเลื่อนออกไปโดยเอ็นจินการแสดงผลเนื่องจากถือว่าเป็นลำดับความสำคัญต่ำกว่าทรัพยากรที่สำคัญ (เช่นสคริปต์ / สไตล์) สิ่งนี้มักเกิดขึ้นกับรูปภาพ
    • คำขอถูกพักไว้เพื่อรอซ็อกเก็ต TCP ที่ใช้งานไม่ได้ซึ่งกำลังจะหมด
    • คำขอถูกพักไว้เนื่องจากเบราว์เซอร์อนุญาตการเชื่อมต่อ TCP ได้หกครั้งต่อหนึ่งรายการบน HTTP 1 เวลาที่ใช้ในการสร้างรายการแคชดิสก์ (โดยทั่วไปจะรวดเร็วมาก)
  • Stalled / Blocking Time คำขอที่ใช้รอก่อนที่จะสามารถส่งได้ อาจรอด้วยเหตุผลใด ๆ ที่อธิบายไว้สำหรับการจัดคิว นอกจากนี้เวลานี้รวมเวลาที่ใช้ในการเจรจาพร็อกซี

1

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


1

เนื่องจากมีหลายคนมาที่นี่การดีบักเว็บไซต์ที่ช้าของพวกเขาฉันต้องการแจ้งให้คุณทราบเกี่ยวกับกรณีของฉันซึ่งไม่มีคำอธิบายของ Google ที่ช่วยแก้ไขปัญหาได้ ครั้งใหญ่ของฉันจนตรอก (บางครั้ง 1 นาที) เกิดจาก Apache ที่ทำงานบน Windows ที่มีเธรดผู้ทำงานน้อยเกินไปที่จะจัดการการเชื่อมต่อดังนั้นพวกเขาจึงถูกจัดคิว

สิ่งนี้อาจนำไปใช้กับคุณหากคุณบันทึก apache มีบันทึกต่อไปนี้:

Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

ปัญหานี้ได้รับการแก้ไขใน Apache httpd.conf ไม่ใส่ข้อคิดเห็น: รวม conf / พิเศษ / httpd-mpm.conf

และแก้ไข httpd-mpm.conf

<IfModule mpm_winnt_module>
   ThreadLimit              2000
   ThreadsPerChild          2000
   MaxConnectionsPerChild   0
</IfModule>

โปรดทราบว่าคุณอาจไม่ต้องการ 2,000 เธรดหรืออาจต้องการเพิ่มเติม 2000 ก็โอเคสำหรับกรณีของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.