[sockets] 일정량의 데이터가 전송 된 후 Chrome이 중단됨-사용 가능한 소켓을 기다리는 중

브라우저 게임이 있고 최근에 게임에 오디오를 추가하기 시작했습니다.

Chrome은 전체 페이지를로드하지 않고 중단되고 "91 requests | 8.1 MB transferred"더 이상 콘텐츠를로드하지 않습니다. 그리고 다른 모든 탭에서 웹 사이트를 깰 수도 있습니다 Waiting for available socket.

5 분 (정확히) 후에 데이터가로드됩니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

다른 브라우저에서는 발생하지 않습니다.

하나의 MP3 파일 (최근에 추가 된 파일)을 제거하면 문제가 해결되었으므로 데이터 제한 문제일까요?



답변

서버 당 연결 한도에 도달 한 것 같습니다. 많은 정적 파일을로드하고있는 것으로 보이며 예를 들어 하위 도메인에서 파일을 분리하고 Nginx에서 직접 제공하는 것이 좋습니다.

  • img.yoursite.com 이라는 하위 도메인을 만들고 여기에서 모든 이미지를로드합니다.

  • scripts.yourdomain.com 이라는 하위 도메인을 만듭니다 . 만들고 거기에서 모든 JS 및 CSS 파일을로드합니다.

  • sounds.yoursite.com 이라는 하위 도메인을 만들고 거기에서 모든 MP3를로드합니다.

Nginx에는 정적 파일을 직접 제공하고 정적 파일 캐싱을 관리하기위한 훌륭한 옵션이 있습니다.


답변

설명:

이 문제는 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.

방문자가 사이트를 볼 수 있도록 이러한 지침을 따르지 않을 것으로 기 대해서는 안되므로이 솔루션은 권장되지 않습니다.


답변

메시지 :

사용 가능한 소켓을 기다리는 중 …

호스트, 프록시 또는 그룹별로 ssl_socket_pool의 한도에 도달했기 때문에이 표시됩니다.

다음은 Chrome 브라우저로 만들 수있는 최대 HTTP 연결 수입니다.

  • 프록시 당 최대 연결 수는 32 개입니다. 정책 목록 에서 변경할 수 있습니다 .
  • 호스트 당 최대 : 6 개 연결.

    이것은 웹 브라우저의 소스 코드에 하드 코딩되어있을 가능성이 있으므로 변경할 수 없습니다.

  • 브라우저 당 풀링 된 총 256 개의 HTTP 연결.

출처 : Chrome 기기 용 엔터프라이즈 네트워킹

위의 제한은에서 chrome://net-internals/#sockets(또는에서 실시간 으로) 확인하거나 플러시 할 수 있습니다 chrome://net-internals/#events&q=type:SOCKET%20is:active.


오디오 문제는 Chrome 버그 162627 과 관련이있을 수 있습니다. HTML5 오디오가로드되지 않고 서버 : 프록시 당 최대 동시 연결에 . 이것은 글을 쓰는 시점 (2016)에서 여전히 활발한 문제입니다.

관련 많은 나이가 문제 HTML5 비디오 요청 숙박은 보류 , 그때는 아마 관련이 있어요 # 234779 발행 2014 년 고정과에서 발견 할 수있는 SPDY 관련되어있는 SPDY 문제 : 문제 324653를 사용할 수 소켓을 기다리고 있지만, 이것은 이미 고정 2014 년에는 아마 관련이 없을 것입니다.

이제 중복으로 표시된 기타 관련 문제는 문제 401845 : 오디오 메타 데이터 미리로드 실패 에서 찾을 수 있습니다 . 미디어 플레이어 코드 문제와 관련된 10 개 이상6 개만로드 되어 일시 중지 된 요청이 많이 남아 있습니다.


이는 또한 백그라운드에서 소켓을 사용하는 일부 Chrome 애드웨어 또는 바이러스 백신 확장 (예 : Sophos 또는 Kaspersky )과 관련이있을 수 있으므로 DevTools 에서 네트워크 활동을 확인하세요 .


답변

간단하고 올바른 해결책은 설정에서 오디오 및 비디오 파일을 미리로드하고 페이지를 다시 확인하는 것입니다. 사용 가능한 소켓을 기다리는 문제가 해결 될 것입니다.

jplayer를 사용하는 경우 preload : “metadata” 를 jplayer에서 preload : “none” 으로 교체하십시오. JS 파일 …

preload : “metadata” 는 페이지로드시 오디오 / 비디오 파일을 재생하는 기본값이므로 Google 크롬에 “사용 가능한 소켓 대기 중”오류가 표시됩니다.


답변

우리의 첫 번째 생각은 사이트가 다운되었거나 비슷한 것이지만 진실은 이것이 문제 나 장애가 아니라는 것입니다. Firefox, Opera 또는 서비스 탐색기에서 테스트 할 때 간단한 연결이 정상적으로 열리기 때문에 문제가되지 않습니다.

Chrome의 오류는 “이 사이트를 사용할 수 없습니다.”라는 기호와 “오류 15 (net :: ERR_SOCKET_NOT_CONNECTED) : 알 수없는 오류”라는 범례와 함께 설명을 표시합니다. 이 오류는 Google 크롬, 더 정확하게는 업데이트에서 매우 일반적이며 해결 방법은 컴퓨터를 다시 시작하는 것입니다.

부분 솔루션이 많지 않기 때문에 1 분 이내에 결함을 해결할 수있는 튜토리얼을 제공합니다. 이 문제를 방지하고 Google 크롬에서 서비스가 정상적으로 열려 있는지 확인하려면 검색 주소창에 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+와 같은 소셜 네트워크 또는 필요한 사람과 튜토리얼을 공유하시기 바랍니다.


답변

Chrome은 Chromium 기반 브라우저이며 Chromium 기반 브라우저는 한 번에 최대 6 개의 열린 소켓 연결 만 허용합니다. 7 번째 연결이 시작되면 유휴 상태로 유지되고 실행중인 6 개 중 하나가 중지 될 때까지 기다린 다음 실행됩니다. 실행을 시작하십시오. 따라서 ‘사용 가능한 소켓을 기다리는 중’ 오류 코드 , 7 번째 소켓은 6 개의 소켓 중 하나가 사용 가능해질 때까지 기다린 다음 실행을 시작합니다.

당신은


답변