Chrome se cuelga después de una cierta cantidad de datos transferidos, esperando el socket disponible


101

Tengo un juego de navegador y recientemente comencé a agregar audio al juego.

Chrome no carga toda la página y se queda bloqueado "91 requests | 8.1 MB transferred"y no carga más contenido; e incluso rompe el sitio web en todas las demás pestañas, diciendo Waiting for available socket.

Después de 5 minutos (exactamente) se cargan los datos.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Esto no sucede en ningún otro navegador.

Eliminar un archivo MP3 (el último agregado) solucionó el problema, entonces, ¿es quizás un problema de límite de datos?


1
¿Presentó o encontró un informe de error para esto? Estamos viendo exactamente el mismo comportamiento (necesidad de comprobar si el # de solicitudes o transferidos bytes igualados pero por lo demás el comportamiento y las coincidencias de error exactamente)
Ene

1
Esto parece un problema conocido: consulte code.google.com/p/chromium/issues/detail?id=324653 Eche un vistazo a code.google.com/p/chromium/issues/detail?id=324653 qué está sucediendo exactamente. Pero si está alcanzando un límite de sockets abiertos, en realidad, incluso otros navegadores tienen un límite en el número de conexiones a un solo dominio. Tiene dos opciones: asegúrese de tener solo unas pocas solicitudes simultáneas activas (serializarlas; no paralelizar); o divida su servidor en subdominios y emita solicitudes a diferentes subdominios.
Ene

5
Caso de nicho, pero si ha reiniciado Chrome recientemente y tiene varias pestañas abiertas en un servidor que requiere autenticación HTTP básica, es posible que obtenga estos errores porque una de sus pestañas de fondo ha abierto un cuadro de diálogo de autenticación. Verifique todas las demás pestañas abiertas para el sitio en cuestión, inicie sesión según sea necesario y vea si el problema está resuelto.
Nathaniel Heinrichs

¿Alguien sabe qué extensión es esta para rastrear los datos que proporcionó en la captura de pantalla?
AlexioVay

2
@NathanielHeinrichs +1 para el "caso de nicho" que me ha estado molestando durante las últimas 2 semanas. Es exactamente lo que me ha estado sucediendo, ¡y ahora sé por qué! Gracias.
Marcus

Respuestas:


68

Parece que está llegando al límite de conexiones por servidor. Veo que está cargando muchos archivos estáticos y mi consejo es separarlos en subdominios y servirlos directamente con Nginx, por ejemplo.

  • Cree un subdominio llamado img.yoursite.com y cargue todas sus imágenes desde allí.

  • Cree un subdominio llamado scripts.yourdomain.com y cargue todos sus archivos JS y CSS desde allí.

  • Crea un subdominio llamado sounds.yoursite.com y carga todos tus MP3 desde allí ... etc.

Nginx tiene excelentes opciones para servir directamente archivos estáticos y administrar el almacenamiento en caché de archivos estáticos.


11
Esto no cambia nada. Simplemente coloque algunos dominios falsos en su archivo de hosts y utilícelos en lugar de localhost.
Predte4a

No es una opción para mí. Estoy tratando de mostrar videos desde mi servidor doméstico a través de la web (cuando estoy en el trabajo).
Sridhar Sarnobat

4
En caso de que httpd (es decir, apache) pueda manejar cientos de sim. conexiones y solo Crome las está limitando, esto no es una solución. En mi caso, son 6 sockets por perfil, por lo que puedo abrir 6 más en un perfil anónimo, etc. Esta es una solución stackoverflow.com/a/29639535/904846 que puede aceptarse como la mejor respuesta.
dmnc

145

Explicación:

Este problema se produce porque Chrome permite hasta 6 conexiones abiertas de forma predeterminada. Entonces, si está transmitiendo múltiples archivos multimedia simultáneamente desde 6 <video>o <audio>etiquetas, la séptima conexión (por ejemplo, una imagen) simplemente se colgará, hasta que uno de los enchufes se abra. Por lo general, una conexión abierta se cerrará después de 5 minutos de inactividad, y es por eso que está viendo que su .png finalmente se carga en ese punto.

Solución 1:

Puede evitar esto minimizando la cantidad de etiquetas de medios que mantienen una conexión abierta. Y si necesita tener más de 6, asegúrese de cargarlos al final o de que no tengan atributos como preload="auto".

Solución 2:

Si está intentando utilizar varios efectos de sonido para un juego web, puede utilizar la API de audio web . O para simplificar las cosas, simplemente use una biblioteca como SoundJS , que es una gran herramienta para reproducir una gran cantidad de efectos de sonido / pistas de música simultáneamente.

Solución 3: Enchufes de apertura forzada (no recomendado)

Si es necesario, puede forzar la apertura de los sockets en su navegador (solo en Chrome):

  1. Ve a la barra de direcciones y escribe chrome://net-internals.
  2. Seleccione Socketsdel menú.
  3. Haga clic en el Flush socket poolsbotón.

No se recomienda esta solución porque no debe esperar que sus visitantes sigan estas instrucciones para poder ver su sitio.


13
Si bien la respuesta aceptada brindó buena información en general, esta es la mejor respuesta.
taco

1
Acabo de instalar Neo4J 3.0.4 y al abrir localhost: 7474 dice esperando sockets disponibles, intenté flush todavía no funciona y en la lista del grupo dice 6 activos y 2 pendientes para este sitio
Adeem

Limpiar los grupos de sockets tampoco me funciona (estoy reproduciendo pequeñas piezas de varios <video>elementos HTML5 y estoy llegando al límite.
Sridhar Sarnobat

En mi caso había muchas pestañas abiertas y sondeo al servidor, cerré todas las pestañas y ahora está bien.
igaurav

Nuestra aplicación heredada había estado solicitando imágenes (acercar / alejar.png, etc.) de un servidor público (que debe haber dejado de ser compatible, lo que generó muchos informes de errores). Todas las solicitudes a ese servidor se bloquearon como "Pendientes" en Chrome y solo enviaría un código de estado HTTP 502 después de aproximadamente dos minutos. Esto dejó la aplicación colgada y no pudo solicitar imágenes de nuestro propio servidor, ya que estaba atascado al solicitar estas imágenes. Gran respuesta: ¡me ayudó a rastrear esto!
Francis Dean

13

El mensaje:

Esperando enchufe disponible ...

se muestra, porque ha alcanzado un límite en ssl_socket_pool ya sea por Host, Proxy o Grupo.

Aquí está la cantidad máxima de conexiones HTTP que puede realizar con un navegador Chrome:

  • El número máximo de conexiones por proxy es 32 conexiones. Esto se puede cambiar en la Lista de políticas .
  • Máximo por host: 6 conexiones.

    Es probable que esto esté codificado en el código fuente del navegador web, por lo que no puede cambiarlo.

  • Total de 256 conexiones HTTP agrupadas por navegador.

Fuente: Redes empresariales para dispositivos Chrome

Los límites anteriores se pueden verificar o eliminar en chrome://net-internals/#sockets(o en tiempo real en chrome://net-internals/#events&q=type:SOCKET%20is:active).


Su problema con el audio puede estar relacionado con el error de Chrome 162627 donde el audio HTML5 no se carga y alcanza el máximo de conexiones simultáneas por servidor: proxy. Este es un tema aún activo en el momento de redactar este artículo (2016).

Un problema mucho más antiguo relacionado con la solicitud de video HTML5 permanece pendiente , entonces probablemente esté relacionado con el Problema # 234779 que se corrigió en 2014. Y relacionado con SPDY que se puede encontrar en el Problema 324653: Problema SPDY: esperando sockets disponibles , pero esto ya se solucionó en 2014, probablemente no esté relacionado.

Otro problema relacionado ahora marcado como duplicado se puede encontrar en el Problema 401845: Error al precargar metadatos de audio. Cargó solo 6 de 10+, lo que estaba relacionado con el problema con el código del reproductor multimedia, dejando un montón de solicitudes en pausa.


Esto también puede estar relacionado con algunas extensiones de antivirus o adware de Chrome que usan sus sockets en los fondos (como Sophos o Kaspersky ), así que verifique la actividad de la red en DevTools .


1
¿Cómo puedo cambiar 6 por servidor a 8 por servidor, ya que parece que algún software que estoy usando necesita 8, por lo que 2 permanece pendiente y el sitio nunca se carga?
Adeem

@Adeem No creo que puedas cambiar eso, creo que está codificado en el código fuente. Puede informar ese problema describiendo su escenario específico.
Kenorb

1
chrome: // net-internals / # events & q = type: SOCKET% 20is: el enlace activo no está actualizado en la última
versión de

6

La solución simple y correcta es posponer la precarga de su archivo de audio y video desde la configuración y volver a verificar su página, su problema de esperar el socket disponible se resolverá ...

si usa jplayer, reemplace preload: "metadata" para preload: "none" de jplayer Archivo JS ...

precarga: "metadatos" es el valor predeterminado que reproduce su archivo de audio / video en la carga de la página, por eso google chrome muestra el error "esperando socket disponible"


0

Nuestro primer pensamiento es que el sitio está caído o algo así, pero la verdad es que ese no es el problema o la discapacidad. Tampoco es un problema porque una simple conexión cuando se prueba con Firefox, Opera o el Explorador de servicios se abre con normalidad.

El error en Chrome muestra un cartel que dice "Este sitio no está disponible" y una aclaración con la leyenda "Error 15 (net :: ERR_SOCKET_NOT_CONNECTED): Error desconocido". El error es bastante habitual en Google Chrome, más precisamente en sus actualizaciones, y su solución es reiniciar el equipo.

Como las soluciones parciales no son muchas, ofrecemos un tutorial para que resuelvas la falla en menos de un minuto. Para evitar este problema y asegurarse de que los servicios estén normalmente abiertos en Google Chrome, debe insertar lo siguiente en la barra de direcciones: chrome: // net-internals (luego dar "Enter"). Luego tienen que ir al "Socket" en el menú de la izquierda y elegir "Flush Socket Pools" (mire las siguientes capturas de pantalla para guiar http://www.fixotip.com/how-to-fix-error-waiting-for -available-sockets-in-google-chrome / ) Esto tiene el problema resuelto y ya no tendrá problemas para acceder a Gmail, Google o cualquiera de los servicios del gigante de Mountain View. Espero que te haya resultado útil y compartas el tutorial con quien necesiten o en las redes sociales: Facebook, Twitter o Google+.


0

Chrome es un navegador basado en Chromium y los navegadores basados ​​en Chromium solo permiten un máximo de 6 conexiones de socket abierto a la vez, cuando se inicia la séptima conexión, simplemente permanecerá inactivo y esperará a que uno de los 6 que se están ejecutando se detenga y luego lo hará. empezar a correr. De ahí el código de error 'esperando sockets disponibles' , el séptimo esperará a que uno de esos 6 sockets esté disponible y luego comenzará a ejecutarse.

Tu también puedes

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.