Chrome แฮงค์หลังจากมีการถ่ายโอนข้อมูลจำนวนหนึ่ง - กำลังรอซ็อกเก็ตที่พร้อมใช้งาน


101

ฉันมีเกมบนเบราว์เซอร์และฉันเพิ่งเริ่มเพิ่มเสียงในเกม

Chrome ไม่โหลดทั้งหน้าและติดขัด"91 requests | 8.1 MB transferred"และไม่โหลดเนื้อหาเพิ่มเติม และมันยังทำลายเว็บไซต์ในแท็บอื่น ๆ ทั้งหมดอีกWaiting for available socketด้วย

หลังจาก 5 นาที (แน่นอน) ข้อมูลจะถูกโหลด

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่

สิ่งนี้ไม่เกิดขึ้นบนเบราว์เซอร์อื่น ๆ

การลบไฟล์ MP3 หนึ่งไฟล์ (ไฟล์ที่เพิ่มล่าสุด) ช่วยแก้ปัญหาได้ดังนั้นอาจเป็นปัญหาการ จำกัด ข้อมูลหรือไม่?


1
คุณยื่นหรือพบรายงานข้อบกพร่องสำหรับสิ่งนี้หรือไม่? เราจะเห็นว่าพฤติกรรมเดียวกัน (จำเป็นที่จะต้องตรวจสอบว่า # ของการร้องขอหรือโอนไบต์จับคู่ แต่อย่างอื่นพฤติกรรมและตรงกับข้อผิดพลาดตรง)
ม.ค.

1
ดูเหมือนว่าจะเป็นปัญหาที่ทราบแล้วโปรดดูcode.google.com/p/chromium/issues/detail?id=324653 ดูcode.google.com/p/chromium/issues/detail?id=324653ว่าเกิดอะไรขึ้น แต่ถ้าคุณใช้งานถึงขีด จำกัด ของซ็อกเก็ตที่เปิดอยู่แล้วแม้แต่เบราว์เซอร์อื่น ๆ ก็มีการ จำกัด จำนวนการเชื่อมต่อกับโดเมนเดียว คุณมีสองทางเลือก - ตรวจสอบให้แน่ใจว่าคุณมีคำขอพร้อมกันเพียงไม่กี่คำขอที่ใช้งานอยู่ (ทำให้เป็นอนุกรมอย่าทำให้เป็นอัมพาต) หรือแยกเซิร์ฟเวอร์ของคุณเป็นโดเมนย่อยและส่งคำขอไปยังโดเมนย่อยต่างๆ
ม.ค.

5
เฉพาะกรณี แต่ถ้าคุณเพิ่งรีสตาร์ท Chrome และเปิดหลายแท็บสำหรับเซิร์ฟเวอร์ที่ต้องมีการตรวจสอบสิทธิ์ HTTP พื้นฐานคุณอาจได้รับข้อผิดพลาดเหล่านี้เนื่องจากแท็บพื้นหลังแท็บหนึ่งของคุณเปิดกล่องโต้ตอบการตรวจสอบสิทธิ์ ตรวจสอบแท็บอื่น ๆ ที่เปิดอยู่ทั้งหมดสำหรับไซต์ที่เป็นปัญหาเข้าสู่ระบบตามความจำเป็นและดูว่าปัญหาได้รับการแก้ไขหรือไม่
Nathaniel Heinrichs

ใครทราบว่าส่วนขยายนี้คืออะไรในการติดตามข้อมูลนี้ที่เขาให้ไว้ในภาพหน้าจอ?
AlexioVay

2
@NathanielHeinrichs +1 สำหรับ "กรณีเฉพาะ" ที่รบกวนฉันในช่วง 2 สัปดาห์ที่ผ่านมา มันเกิดอะไรขึ้นกับฉันและตอนนี้ฉันรู้แล้วว่าทำไม! ขอบคุณ.
Marcus

คำตอบ:


68

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

  • สร้างโดเมนย่อยชื่อimg.yoursite.comและโหลดภาพทั้งหมดของคุณจากที่นั่น

  • สร้างโดเมนย่อยชื่อscripts.yourdomain.comและโหลดไฟล์ JS และ CSS ทั้งหมดจากที่นั่น

  • สร้างโดเมนย่อยชื่อsounds.yoursite.comและโหลดไฟล์ MP3 ทั้งหมดของคุณจากที่นั่น ... ฯลฯ ..

Nginx มีตัวเลือกที่ยอดเยี่ยมสำหรับการให้บริการไฟล์แบบคงที่โดยตรงและจัดการแคชไฟล์แบบคงที่


11
สิ่งนี้ไม่ได้เปลี่ยนแปลงอะไร เพียงแค่ใส่โดเมนปลอมในไฟล์โฮสต์ของคุณและใช้แทน localhost
Predte4a

ไม่ใช่ตัวเลือกสำหรับฉัน ฉันพยายามให้บริการวิดีโอจากเซิร์ฟเวอร์ที่บ้านของฉันผ่านทางเว็บ (ตอนที่ฉันทำงาน)
Sridhar Sarnobat

4
ในกรณีที่ httpd (เช่น apache) สามารถรองรับหลายร้อยซิม การเชื่อมต่อและ Crome เท่านั้นที่ จำกัด พวกเขานี่ไม่ใช่วิธีแก้ปัญหา ในกรณีของฉันคือ 6 ซ็อกเก็ตต่อโปรไฟล์ดังนั้นฉันจึงสามารถเปิดได้อีก 6 ช่องในโปรไฟล์ที่ไม่ระบุตัวตนเป็นต้นนี่คือโซลูชันstackoverflow.com/a/29639535/904846ซึ่งอาจยอมรับว่าเป็นคำตอบที่ดีที่สุด
dmnc

146

คำอธิบาย:

ปัญหานี้เกิดขึ้นเนื่องจาก Chrome อนุญาตให้เปิดการเชื่อมต่อได้สูงสุด 6 รายการโดยค่าเริ่มต้น ดังนั้นหากคุณกำลังสตรีมไฟล์สื่อหลายไฟล์พร้อมกันจาก 6 <video>หรือ<audio>แท็กการเชื่อมต่อที่ 7 (เช่นรูปภาพ) จะหยุดทำงานจนกว่าซ็อกเก็ตใดซ็อกเก็ตหนึ่งจะเปิดขึ้น โดยปกติแล้วการเชื่อมต่อแบบเปิดจะปิดลงหลังจากไม่มีการใช้งานเป็นเวลา 5 นาทีและนั่นคือสาเหตุที่คุณเห็นไฟล์. png ของคุณโหลด ณ จุดนั้นในที่สุด

แนวทางที่ 1:

คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยลดจำนวนแท็กสื่อที่รักษาการเชื่อมต่อแบบเปิด และถ้าคุณต้องการที่จะมีมากกว่า 6 preload="auto"ให้แน่ใจว่าคุณโหลดพวกเขาที่ผ่านมาหรือว่าพวกเขาไม่ได้มีคุณลักษณะเช่น

แนวทางที่ 2:

ถ้าคุณกำลังพยายามที่จะใช้ผลเสียงหลายเกมบนเว็บที่คุณสามารถใช้Web Audio API หรือเพื่อให้ง่ายขึ้นเพียงใช้ไลบรารีเช่นSoundJSซึ่งเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเล่นเอฟเฟกต์เสียง / แทร็กเพลงจำนวนมากพร้อมกัน

โซลูชันที่ 3: ซ็อกเก็ตบังคับเปิด (ไม่แนะนำ)

หากคุณต้องการคุณสามารถบังคับเปิดซ็อกเก็ตในเบราว์เซอร์ของคุณได้ (ใน Chrome เท่านั้น):

  1. chrome://net-internalsไปที่แถบที่อยู่และชนิด
  2. เลือกSocketsจากเมนู
  3. คลิกที่Flush socket poolsปุ่ม

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


13
แม้ว่าคำตอบที่ยอมรับโดยทั่วไปจะให้ข้อมูลที่ดี แต่นี่เป็นคำตอบที่ดีที่สุด
taco

1
เพิ่งติดตั้ง Neo4J 3.0.4 และเมื่อเปิดlocalhost: 7474มันบอกว่ากำลังรอซ็อกเก็ตที่มีอยู่พยายามล้างแล้วยังไม่ทำงานและในรายการพูลแจ้งว่า 6 ใช้งานอยู่และ 2 รอดำเนินการสำหรับไซต์นี้
Adeem

สระว่ายน้ำซ็อกเก็ตฟลัชชิงก็ไม่ได้ผลสำหรับฉันเช่นกัน (ฉันกำลังเล่น<video>องค์ประกอบHTML5 ชิ้นเล็ก ๆ หลายชิ้นและถึงขีด จำกัด
Sridhar Sarnobat

ในกรณีของฉันมีหลายแท็บเปิดอยู่และทำการสำรวจเซิร์ฟเวอร์ปิดแท็บทั้งหมดและตอนนี้ก็ดีแล้ว
igaurav

แอปพลิเคชันเดิมของเราได้ร้องขอรูปภาพ (zoom in / out.png ฯลฯ ) จากเซิร์ฟเวอร์สาธารณะ (ซึ่งต้องหยุดการรองรับซึ่งจะทำให้มีรายงานข้อผิดพลาดจำนวนมาก) คำขอทั้งหมดไปยังเซิร์ฟเวอร์นั้นค้างอยู่ในสถานะ "รอดำเนินการ" ใน Chrome และจะส่งรหัสสถานะ HTTP 502 กลับมาหลังจากนั้นประมาณสองนาที สิ่งนี้ทำให้แอปพลิเคชันหยุดทำงานและไม่สามารถขอภาพจากเซิร์ฟเวอร์ของเราเองได้เนื่องจากการร้องขอภาพเหล่านี้อุดตัน คำตอบที่ดี - ช่วยฉันติดตามสิ่งนี้!
Francis Dean

13

ข้อความ:

กำลังรอซ็อกเก็ตที่ใช้ได้ ...

จะแสดงขึ้นเนื่องจากคุณได้ใช้ ssl_socket_pool ถึงขีด จำกัด ต่อโฮสต์พร็อกซีหรือกลุ่ม

ต่อไปนี้คือจำนวนการเชื่อมต่อ HTTP สูงสุดที่คุณสามารถทำได้ด้วยเบราว์เซอร์ Chrome:

  • จำนวนการเชื่อมต่อสูงสุดต่อพร็อกซีคือ 32 การเชื่อมต่อ นี้สามารถเปลี่ยนแปลงได้ในรายการนโยบาย
  • สูงสุดต่อโฮสต์: 6 การเชื่อมต่อ

    อาจมีการเข้ารหัสในซอร์สโค้ดของเว็บเบราว์เซอร์ดังนั้นคุณจึงไม่สามารถเปลี่ยนแปลงได้

  • การเชื่อมต่อ HTTP ทั้งหมด 256 รายการต่อเบราว์เซอร์

ที่มา: ระบบเครือข่ายระดับองค์กรสำหรับอุปกรณ์ Chrome

ขีด จำกัด ข้างต้นสามารถตรวจสอบหรือล้างได้ที่chrome://net-internals/#sockets(หรือตามเวลาจริงที่chrome://net-internals/#events&q=type:SOCKET%20is:active)


ปัญหาเกี่ยวกับเสียงของคุณอาจเกี่ยวข้องกับข้อบกพร่องของ Chrome 162627ที่เสียง HTML5 ไม่สามารถโหลดได้และเกิดการเชื่อมต่อพร้อมกันสูงสุดต่อเซิร์ฟเวอร์: พร็อกซี ปัญหานี้ยังคงเป็นปัญหาในขณะที่เขียน (2016)

ปัญหาที่เก่ากว่ามากเกี่ยวกับคำขอวิดีโอ HTML5ยังคงรอดำเนินการอยู่อาจเกี่ยวข้องกับปัญหา # 234779ซึ่งได้รับการแก้ไขในปี 2014 และเกี่ยวข้องกับ SPDY ซึ่งพบได้ในปัญหา 324653: SPDY: กำลังรอซ็อกเก็ตที่พร้อมใช้งานแต่ได้รับการแก้ไขแล้ว ในปี 2014 ดังนั้นอาจไม่เกี่ยวข้องกัน

ปัญหาอื่น ๆ ที่เกี่ยวข้องขณะนี้ถูกทำเครื่องหมายว่าซ้ำกันสามารถพบได้ในฉบับ 401845: ความล้มเหลวในการโหลดข้อมูลเมตาของเสียงล่วงหน้า โหลดเพียง 6 จาก 10+ซึ่งเกี่ยวข้องกับปัญหาเกี่ยวกับรหัสเครื่องเล่นสื่อทิ้งคำขอที่หยุดชั่วคราวไว้มากมาย


นอกจากนี้ยังอาจจะเกี่ยวข้องกับบางแอดแวร์หรือโปรแกรมป้องกันไวรัสส่วนขยายของ Chrome โดยใช้ซ็อกเก็ตของคุณในพื้นหลัง (เช่นSophosหรือKaspersky ) เพื่อตรวจสอบเครือข่ายกิจกรรมในDevTools


1
ฉันจะเปลี่ยน 6 ต่อเซิร์ฟเวอร์เป็น 8 ต่อเซิร์ฟเวอร์ได้อย่างไรเนื่องจากดูเหมือนว่าซอฟต์แวร์บางตัวที่ฉันใช้ต้องการ 8 ผลลัพธ์ 2 ยังคงค้างอยู่และไซต์ไม่เคยโหลด
Adeem

@Adeem ฉันไม่คิดว่าคุณจะเปลี่ยนมันได้ฉันเชื่อว่ามันถูกฮาร์ดโค้ดในซอร์สโค้ด คุณสามารถรายงานปัญหานั้นโดยอธิบายสถานการณ์เฉพาะของคุณ
kenorb

1
chrome: // net-internals / # events & q = type: SOCKET% 20is: ลิงก์ที่ใช้งานไม่ทันสมัยใน Chrome ล่าสุด
pyrytakala

6

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

หากคุณใช้ jplayer ให้แทนที่พรีโหลด: "metadata"เพื่อโหลดล่วงหน้า: "ไม่มี"จาก jplayer ไฟล์ JS ...

โหลดล่วงหน้า: "ข้อมูลเมตา"เป็นค่าเริ่มต้นที่เล่นไฟล์เสียง / วิดีโอของคุณในการโหลดหน้าเว็บซึ่งเป็นสาเหตุที่ Google Chrome แสดงข้อผิดพลาด "กำลังรอซ็อกเก็ตที่พร้อมใช้งาน"


0

ความคิดแรกของเราคือไซต์ล่มหรือคล้ายกัน แต่ความจริงก็คือนี่ไม่ใช่ปัญหาหรือความพิการ ไม่ใช่ปัญหาเพราะการเชื่อมต่อแบบธรรมดาเมื่อทดสอบภายใต้ Firefox, Opera หรือ services Explorer จะเปิดขึ้นตามปกติ

ข้อผิดพลาดใน Chrome แสดงเครื่องหมายที่ระบุว่า "ไซต์นี้ไม่พร้อมใช้งาน" และคำชี้แจงพร้อมคำอธิบาย "ข้อผิดพลาด 15 (net :: ERR_SOCKET_NOT_CONNECTED): ข้อผิดพลาดที่ไม่รู้จัก" ข้อผิดพลาดค่อนข้างปกติใน Google Chrome โดยมีความแม่นยำมากขึ้นในการอัปเดตและวิธีแก้ปัญหาคือการรีสตาร์ทคอมพิวเตอร์

เนื่องจากวิธีแก้ปัญหาบางส่วนมีไม่มากนักเราจึงนำเสนอบทช่วยสอนสำหรับคุณในการแก้ปัญหาในเวลาไม่ถึงหนึ่งนาที เพื่อหลีกเลี่ยงปัญหานี้และตรวจสอบว่าบริการต่างๆเปิดอยู่ใน Google Chrome ตามปกติควรแทรกสิ่งต่อไปนี้ลงในแถบที่อยู่: chrome: // net-internals (จากนั้นให้ "Enter") จากนั้นพวกเขาจะต้องไปที่ "Socket" ในเมนูด้านซ้ายและเลือก "Flush Socket Pools" (ดูภาพหน้าจอต่อไปนี้เพื่อเป็นแนวทางhttp://www.fixotip.com/how-to-fix-error-waiting-for -available-sockets-in-google-chrome / ) ปัญหานี้ได้รับการแก้ไขแล้วและจะไม่ประสบปัญหาในการเข้าถึง Gmail, Google หรือบริการใด ๆ ของยักษ์ใหญ่ Mountain View อีกต่อไป ฉันหวังว่าคุณจะพบว่ามีประโยชน์และแบ่งปันบทแนะนำกับผู้ที่พวกเขาต้องการหรือเครือข่ายโซเชียล: Facebook, Twitter หรือ Google+


0

Chrome เป็นเบราว์เซอร์ที่ใช้ Chromium และเบราว์เซอร์ที่ใช้ Chromium อนุญาตการเชื่อมต่อซ็อกเก็ตแบบเปิดสูงสุด 6 ครั้งต่อครั้งเมื่อการเชื่อมต่อครั้งที่ 7 เริ่มต้นขึ้นการเชื่อมต่อครั้งที่ 7 จะไม่ได้ใช้งานและรอให้หนึ่งใน 6 ตัวที่กำลังทำงานอยู่เพื่อหยุดและจากนั้นจะ เริ่มทำงาน ดังนั้นรหัสข้อผิดพลาด'กำลังรอซ็อกเก็ตที่พร้อมใช้งาน' รหัสที่ 7 จะรอให้หนึ่งในซ็อกเก็ต 6 ตัวนั้นพร้อมใช้งานจากนั้นจะเริ่มทำงาน

คุณสามารถทำได้

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