Chrome hängt nach einer bestimmten übertragenen Datenmenge und wartet auf den verfügbaren Socket


101

Ich habe ein Browsergame und habe kürzlich damit begonnen, dem Spiel Audio hinzuzufügen.

Chrome lädt nicht die gesamte Seite und bleibt hängen "91 requests | 8.1 MB transferred"und lädt keinen weiteren Inhalt mehr. und es bricht sogar die Website in allen anderen Registerkarten, sagt Waiting for available socket.

Nach 5 Minuten (genau) werden die Daten geladen.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Dies ist in keinem anderen Browser der Fall.

Das Entfernen einer MP3-Datei (der zuletzt hinzugefügten) hat das Problem behoben. Handelt es sich also möglicherweise um ein Datenlimitproblem?


1
Haben Sie einen Fehlerbericht dafür eingereicht oder gefunden? Wir sehen genau gleiches Verhalten (Notwendigkeit , wenn die Anzahl der Anfragen zu überprüfen oder übertragen Bytes angepasst aber ansonsten ist das Verhalten und Fehler Streichhölzer genau)
Jan

1
Dies scheint ein bekanntes Problem zu sein - siehe code.google.com/p/chromium/issues/detail?id=324653 Schauen Sie in code.google.com/p/chromium/issues/detail?id=324653 nach, was genau passiert. Wenn Sie jedoch ein Limit an geöffneten Sockets erreichen, ist die Anzahl der Verbindungen zu einer einzelnen Domain sogar in anderen Browsern begrenzt. Sie haben zwei Möglichkeiten: Stellen Sie entweder sicher, dass nur wenige gleichzeitige Anforderungen aktiv sind (serialisieren Sie sie; nicht parallelisieren). oder teilen Sie Ihren Server in Subdomains auf und senden Sie Anforderungen an verschiedene Subdomains.
Januar

5
Nischenfall, aber wenn Sie Chrome kürzlich neu gestartet haben und mehrere Registerkarten für einen Server geöffnet sind, für den eine grundlegende HTTP-Authentifizierung erforderlich ist, werden diese Fehler möglicherweise angezeigt, da auf einer Ihrer Hintergrundregisterkarten ein Authentifizierungsdialogfeld angezeigt wird. Überprüfen Sie alle anderen geöffneten Registerkarten für die betreffende Site, melden Sie sich bei Bedarf an und prüfen Sie, ob das Problem behoben ist.
Nathaniel Heinrichs

Weiß jemand, um welche Erweiterung es sich handelt, um diese Daten zu verfolgen, die er im Screenshot angegeben hat?
AlexioVay

2
@ NathanielHeinrichs +1 für den "Nischenfall", der mich in den letzten 2 Wochen nervt. Genau das ist mir passiert, und jetzt weiß ich warum! Vielen Dank.
Marcus

Antworten:


68

Sieht so aus, als würden Sie das Limit für Verbindungen pro Server erreichen. Ich sehe, dass Sie viele statische Dateien laden, und mein Rat ist, sie in Subdomains zu trennen und sie beispielsweise direkt mit Nginx bereitzustellen.

  • Erstellen Sie eine Subdomain mit dem Namen img.yoursite.com und laden Sie alle Ihre Bilder von dort.

  • Erstellen Sie eine Subdomain mit dem Namen scripts.yourdomain.com und laden Sie von dort aus alle Ihre JS- und CSS-Dateien.

  • Erstellen Sie eine Subdomain namens sounds.yoursite.com und laden Sie alle Ihre MP3s von dort ... etc ..

Nginx bietet großartige Optionen zum direkten Bereitstellen statischer Dateien und zum Verwalten des Zwischenspeicherns statischer Dateien.


11
Das ändert nichts. Fügen Sie einfach einige gefälschte Domains in Ihre Hosts-Datei ein und verwenden Sie sie anstelle von localhost.
Predte4a

Keine Option für mich. Ich versuche, Videos von meinem Heimserver über das Internet bereitzustellen (wenn ich bei der Arbeit bin).
Sridhar Sarnobat

4
Für den Fall, dass httpd (dh Apache) Hunderte von Sims verarbeiten kann. Verbindungen und nur Crome begrenzt sie, dies ist keine Lösung. In meinem Fall sind es 6 Sockets pro Profil, sodass ich 6 weitere in einem anonymen Profil usw. öffnen kann. Dies ist eine Lösung stackoverflow.com/a/29639535/904846, die möglicherweise als beste Antwort akzeptiert wird.
dmnc

145

Erläuterung:

Dieses Problem tritt auf, weil Chrome standardmäßig bis zu 6 offene Verbindungen zulässt. Wenn Sie also mehrere Mediendateien gleichzeitig von 6 <video>oder <audio>Tags streamen , bleibt die 7. Verbindung (z. B. ein Bild) hängen, bis sich einer der Sockets öffnet. Normalerweise wird eine offene Verbindung nach 5 Minuten Inaktivität geschlossen. Aus diesem Grund werden Ihre .pngs zu diesem Zeitpunkt endlich geladen.

Lösung 1:

Sie können dies vermeiden, indem Sie die Anzahl der Medien-Tags minimieren, die eine offene Verbindung aufrechterhalten. Und wenn Sie mehr als 6 benötigen, stellen Sie sicher, dass Sie sie zuletzt laden oder dass sie keine Attribute wie haben preload="auto".

Lösung 2:

Wenn Sie versuchen, mehrere Soundeffekte für ein Webspiel zu verwenden, können Sie die Web-Audio-API verwenden . Oder verwenden Sie zur Vereinfachung einfach eine Bibliothek wie SoundJS , ein großartiges Tool zum gleichzeitigen Abspielen einer großen Anzahl von Soundeffekten / Musiktiteln.

Lösung 3: Steckdosen mit Gewalt öffnen (nicht empfohlen)

Wenn Sie müssen, können Sie die Sockets in Ihrem Browser zwangsweise öffnen (nur in Chrome):

  1. Gehen Sie zur Adressleiste und geben Sie ein chrome://net-internals.
  2. Wählen Sie Socketsaus dem Menü.
  3. Klicken Sie auf die Flush socket poolsSchaltfläche.

Diese Lösung wird nicht empfohlen, da Sie nicht erwarten sollten, dass Ihre Besucher diese Anweisungen befolgen, um Ihre Website anzeigen zu können.


13
Während die akzeptierte Antwort im Allgemeinen gute Informationen lieferte, ist dies die beste Antwort.
Taco

1
Gerade installiert Neo4J 3.0.4 und beim Öffnen von localhost: 7474 heißt es, auf verfügbare Sockets zu warten, versucht zu spülen funktioniert immer noch nicht und in der Pool-Liste steht 6 aktiv und 2 ausstehend für diese Site
Adeem

Das Spülen von Socket-Pools funktioniert auch bei mir nicht (ich spiele kleine Teile mehrerer HTML5- <video>Elemente und
stoße an

In meinem Fall waren viele Registerkarten geöffnet und wurden zum Server abgefragt, alle Registerkarten wurden geschlossen und jetzt ist es gut.
Igaurav

Unsere Legacy-Anwendung hat Bilder (zoom in / out.png usw.) von einem öffentlichen Server angefordert (der möglicherweise nicht mehr unterstützt wird, was zu vielen Fehlerberichten führte). Alle Anforderungen an diesen Server steckten in Chrome als "Ausstehend" fest und es wurde erst nach etwa zwei Minuten ein HTTP-Statuscode 502 zurückgesendet. Dadurch blieb die Anwendung hängen und konnte keine Bilder von unserem eigenen Server anfordern, da sie beim Anfordern dieser Bilder verstopft war. Tolle Antwort - hat mir geholfen, das aufzuspüren!
Francis Dean

13

Die Nachricht:

Warten auf verfügbare Steckdose ...

wird angezeigt, weil Sie ein Limit für den ssl_socket_pool entweder pro Host, Proxy oder Gruppe erreicht haben.

Hier ist die maximale Anzahl von HTTP-Verbindungen, die Sie mit einem Chrome-Browser herstellen können:

  • Die maximale Anzahl von Verbindungen pro Proxy beträgt 32 Verbindungen. Dies kann in der Richtlinienliste geändert werden .
  • Maximal pro Host: 6 Verbindungen.

    Dies ist wahrscheinlich im Quellcode des Webbrowsers fest codiert, sodass Sie ihn nicht ändern können.

  • Insgesamt 256 HTTP-Verbindungen pro Browser zusammengefasst.

Quelle: Unternehmensnetzwerk für Chrome-Geräte

Die oben genannten Grenzwerte können überprüft oder gespült werden chrome://net-internals/#sockets(oder in Echtzeit um chrome://net-internals/#events&q=type:SOCKET%20is:active).


Ihr Problem mit Audio kann mit dem Chrome-Fehler 162627 zusammenhängen, bei dem HTML5-Audio nicht geladen werden kann und maximal gleichzeitige Verbindungen pro Server: Proxy erreicht werden. Dies ist zum Zeitpunkt des Schreibens (2016) noch ein aktives Thema.

Ein viel älteres Problem im Zusammenhang mit HTML5- Videoanfragen steht noch aus , dann hängt es wahrscheinlich mit dem Problem Nr. 234779 zusammen, das 2014 behoben wurde. Und mit SPDY, das in Problem 324653 zu finden ist: SPDY-Problem: Warten auf verfügbare Sockets , dies wurde jedoch bereits behoben im Jahr 2014, also ist es wahrscheinlich nicht verwandt.

Ein anderes verwandtes Problem, das jetzt als doppelt markiert ist, ist in Problem 401845 zu finden: Fehler beim Vorladen von Audio-Metadaten. Es wurden nur 6 von 10+ geladen, was mit dem Problem mit dem Media Player-Code zusammenhängt und eine Reihe von angehaltenen Anfragen hinterlassen hat.


Dies kann auch mit einigen Chrome-Adware- oder Antiviren-Erweiterungen zusammenhängen, die Ihre Sockets im Hintergrund verwenden (z. B. Sophos oder Kaspersky ). Überprüfen Sie daher die Netzwerkaktivität in DevTools .


1
Wie kann ich 6 pro Server in 8 pro Server ändern, da anscheinend einige Software, die ich verwende, 8 benötigt, was dazu führt, dass 2 ausstehen und die Site nie geladen wird
Adeem

@Adeem Ich glaube nicht, dass du das ändern kannst, ich glaube, es ist im Quellcode fest codiert. Sie können dieses Problem melden, das Ihr spezifisches Szenario beschreibt.
Kenorb

1
chrome: // net-internals / # events & q = Typ: SOCKET% 20is: Der aktive Link ist im neuesten Chrome nicht aktuell
pyrytakala

6

einfache und korrekte Lösung wird Ihre Audio- und Videodatei von Einstellung off Vorspannung setzen und erneut prüfen Ihrer Seite Ihr Problem nach verfügbaren Sockel des Wartens wird aufgelöst ...

wenn Sie jplayer dann ersetzen verwenden Vorbelastung: „Metadaten“ auf Vorbelastung: „none“ von jplayer JS-Datei ...

Preload: "Metadaten" ist der Standardwert, mit dem Ihre Audio- / Videodatei beim Laden der Seite abgespielt wird. Deshalb zeigt Google Chrome den Fehler "Warten auf verfügbaren Socket" an


0

Unser erster Gedanke ist, dass die Website nicht verfügbar ist oder dergleichen, aber die Wahrheit ist, dass dies nicht das Problem oder die Behinderung ist. Dies ist auch kein Problem, da eine einfache Verbindung beim Testen unter Firefox, Opera oder Services Explorer wie gewohnt geöffnet wird.

Der Fehler in Chrome zeigt ein Schild mit der Aufschrift "Diese Site ist nicht verfügbar" und eine Erläuterung mit der Legende "Fehler 15 (net :: ERR_SOCKET_NOT_CONNECTED): Unbekannter Fehler" an. Der Fehler ist in Google Chrome durchaus üblich, genauer gesagt in den Updates. Die Problemumgehung besteht darin, den Computer neu zu starten.

Da Teillösungen nicht viel sind, bieten wir ein Tutorial an, mit dem Sie den Fehler in weniger als einer Minute beheben können. Um dieses Problem zu vermeiden und sicherzustellen, dass Dienste in Google Chrome normalerweise geöffnet sind, sollten Sie Folgendes in die Adressleiste einfügen: chrome: // net-internals (geben Sie dann "Enter" ein). Sie müssen dann zum "Socket" im linken Menü gehen und "Flock Socket Pools" auswählen (siehe die folgenden Screenshots als Anleitung http://www.fixotip.com/how-to-fix-error-waiting-for -available-sockets-in-google-chrome / ) Damit ist das Problem behoben und es treten keine Probleme mehr beim Zugriff auf Google Mail, Google oder einen der Dienste des Mountain View-Riesen auf. Ich hoffe, Sie fanden es nützlich und teilen das Tutorial, mit dem sie oder soziale Netzwerke benötigen: Facebook, Twitter oder Google+.


0

Chrome ist ein Chromium-basierter Browser, und Chromium-basierte Browser erlauben jeweils nur maximal 6 offene Socket-Verbindungen. Wenn die 7. Verbindung gestartet wird, bleibt sie nur im Leerlauf und wartet, bis eine der 6 laufenden Verbindungen beendet wird Lauf. Daher der Fehlercode 'Warten auf verfügbare Sockets' , der 7. wartet darauf, dass einer dieser 6 Sockets verfügbar wird, und startet dann.

Du kannst entweder

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.