特定の量のデータが転送された後にChromeがハングする-使用可能なソケットを待機しています


101

私はブラウザゲームを持っていて、最近ゲームにオーディオを追加し始めました。

Chromeはページ全体をロードせず、スタックし"91 requests | 8.1 MB transferred"、それ以上コンテンツをロードしません。そしてそれは他のすべてのタブでウェブサイトを壊しさえします、と言いWaiting for available socketます。

5分後(正確に)、データがロードされます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

これは他のブラウザでは発生しません。

1つのMP3ファイル(最後に追加されたもの)を削除すると問題が解決したので、おそらくデータ制限の問題ですか?


1
これについてバグレポートを提出または見つけましたか?まったく同じ動作が見られます(リクエストの数または転送されたバイト数が一致しているかどうかを確認する必要がありますが、それ以外の動作とエラーは正確に一致しています)
Jan

1
既知の問題のようなこのルックスは-を参照してcode.google.com/p/chromium/issues/detail?id=324653 に見て持ってcode.google.com/p/chromium/issues/detail?id=324653正確に何が起こっているかを。ただし、開いているソケットの制限に達している場合、実際には他のブラウザでさえ、単一ドメインへの接続数に制限があります。2つのオプションがあります。どちらか一方のアクティブな同時リクエストが少ないことを確認します(それらをシリアル化します。並列化しないでください)。または、サーバーをサブドメインに分割し、異なるサブドメインにリクエストを発行します。
1

5
ニッチなケースですが、最近Chromeを再起動し、基本的なHTTP認証を必要とするサーバーに対して複数のタブを開いている場合、バックグラウンドタブの1つが認証ダイアログをポップしたため、これらのエラーが発生する可能性があります。問題のサイトの他の開いているすべてのタブを確認し、必要に応じてログインし、問題が解決されたかどうかを確認します。
Nathaniel Heinrichs

スクリーンショットで提供したこのデータを追跡するための拡張機能を知っている人はいますか?
AlexioVay 2017

2
@NathanielHeinrichs +1過去2週間私を悩ませてきた "nicheケース"。それはまさに私に起こっていることです、そして今、私はその理由を知っています!ありがとう。
Marcus

回答:


68

サーバーあたりの接続数の上限に達しているようです。たくさんの静的ファイルを読み込んでいるようですが、私のアドバイスは、サブドメインでそれらを分離して、たとえばNginxで直接提供することです。

  • img.yoursite.comというサブドメインを作成し、そこからすべての画像を読み込みます。

  • scripts.yourdomain.comというサブドメインを作成し、そこからすべてのJSおよびCSSファイルをロードします。

  • sound.yoursite.comというサブドメインを作成し、そこからすべてのMP3をロードします...など。

Nginxには、静的ファイルを直接提供し、静的ファイルのキャッシュを管理するための優れたオプションがあります。


11
これは何も変更しません。いくつかの偽のドメインをhostsファイルに入れて、localhostの代わりに使用してください。
Predte4a 14

私には選択肢ではありません。ホームサーバーからWeb経由でビデオを配信しようとしています(仕事中)。
Sridhar Sarnobat

4
httpd(つまりapache)が何百ものシムを処理できる場合。接続とクロームがそれらを制限している、これは解決策ではありません。私は匿名のプロファイルでより多くの6を開くことができますので、私のケースでは、これが解であるなど、プロファイルごとに6つのソケットであるstackoverflow.com/a/29639535/904846最良の答えとして受け入れられるためにも。
dmnc 2017年

145

説明:

この問題は、Chromeがデフォルトで最大6つのオープン接続を許可するために発生します。したがって、6 <video>つまたは<audio>タグから複数のメディアファイルを同時にストリーミングしている場合、ソケットの1つが開くまで、7番目の接続(たとえば、イメージ)がハングします。通常、開いている接続は5分間何も操作しないと閉じます。そのため、その時点で.pngが最終的に読み込まれます。

解決策1:

開いた接続を維持するメディアタグの数を最小限に抑えることで、これを回避できます。また、6つ以上必要な場合は、最後に読み込むか、などの属性がないことを確認してくださいpreload="auto"

解決策2:

Webゲームで複数の効果音を使用する場合は、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

ソケットプールをフラッシュすると、私はいくつかのHTML5の小片遊んでいます(どちらか私のために働いていない<video>要素を、リミットを押す。
シュリダールSarnobat

私の場合、多くのタブが開いていてサーバーへのポーリングが行われ、すべてのタブが閉じられました。
igaurav 2017

私たちのレガシーアプリケーションは、パブリックサーバーから画像(zoom in / out.pngなど)をリクエストしていました(サポートされなくなったはずです-多くのエラーレポートが表示されます)。そのサーバーへのすべてのリクエストはChromeで「保留中」としてスタックし、約2分後にHTTPステータスコード502を返すだけでした。これにより、アプリケーションがハングし、これらの画像を要求して詰まったため、独自のサーバーから画像を要求できなくなりました。すばらしい回答です。これを追跡するのに役立ちました。
フランシスディーン

13

メッセージ:

使用可能なソケットを待機しています...

これは、ホスト、プロキシ、またはグループごとのssl_socket_poolの制限に達したために表示されます。

Chromeブラウザで作成できるHTTP接続の最大数は次のとおりです。

  • プロキシごとの最大接続数は32接続です。これは、ポリシーリストで変更できます。
  • ホストあたりの最大数:6接続。

    これはWebブラウザのソースコードにハードコードされている可能性が高いため、変更できません。

  • ブラウザごとにプールされたHTTP接続の合計は256。

出典:Chromeデバイス向けエンタープライズネットワーキング

上記の制限は、でchrome://net-internals/#sockets(またはでリアルタイムでchrome://net-internals/#events&q=type:SOCKET%20is:active)チェックまたはフラッシュできます。


音声に関する問題は、HTML5音声の読み込みに失敗し、server:proxyあたりの最大同時接続数に達するChromeバグ162627に関連している可能性があります。これは、執筆時点(2016)でまだアクティブな問題です。

HTML5ビデオリクエストに関連するはるかに古い問題は保留のままで、2014年に修正された問題#234779に関連している可能性があります。また、問題324653にあるSPDYに関連しています:SPDYの問題:利用可能なソケットを待機していますが、これはすでに修正されています2014年には、おそらく関連はありません。

重複としてマークされた他の関連する問題は、問題401845:オーディオメタデータのプリロードの失敗にあります。メディアプレーヤーのコードの問題に関連する10以上のうち6つだけをロードしました。一時停止されたリクエストの束がぶら下がっています。


これは、バックグラウンドでソケットを使用している一部のChromeアドウェアまたはウイルス対策拡張機能(ソフォスカスペルスキーなど)にも関連している可能性があるため、DevToolsネットワークアクティビティを確認してください。


1
私が係属中の2つの滞在を結果のニーズ8と、サイトを使用していますいくつかのソフトウェアがロードされることはありませんようだとしてどのように私は、サーバーごとに8に、サーバーごとに6を変更することができます
アデアム

@Adeem変更できないと思います。ソースコードにハードコードされていると思います。特定のシナリオを説明する問題報告できます。
kenorb

1
chrome:// net-internals /#events&q = type:SOCKET%20is:activeリンクが最新のChromeで最新ではありません
ピリタカラ

6

シンプルで正しい解決策は、オーディオファイルとビデオファイルを設定からプリロードし、ページを再確認することです。使用可能なソケットを待機する問題が解決されます...

jplayerを使用する場合、preload: "metadata"をjloadからpreload: "none"に置き換えます。 JSファイル...

preload: "metadata"は、ページの読み込み時にオーディオ/ビデオファイルを再生するデフォルト値です。そのため、Google Chromeで「利用可能なソケットを待機しています」エラーが表示されます。


0

私たちの最初の考えは、サイトのダウンなどですが、これは問題や障害ではないというのが本当のところです。また、Firefox、Opera、またはServices Explorerでテストした場合の単純な接続は通常どおりに開くため、問題にはなりません。

Chromeのエラーには、「このサイトは利用できません」という説明と、「エラー15(net :: ERR_SOCKET_NOT_CONNECTED):不明なエラー」という説明が表示されます。このエラーはGoogle Chromeではかなり一般的で、より正確にはアップデートです。その回避策はコンピューターを再起動することです。

部分的な解決策はそれほど多くないため、1分未満で障害を解決するためのチュートリアルを提供します。この問題を回避し、サービスが通常Googleで開いていることを確認するには、アドレスバーに次を挿入する必要があります:chrome:// net-internals(次に「Enter」を押します)。次に、左側のメニューの[ソケット]に移動して[ソケットプールをフラッシュ]を選択する必要があります(次のスクリーンショットを見て、http://www.fixotip.com/how-to-fix-error-waiting-for -available-sockets-in-google-chrome /)これで問題が解決し、Gmail、Google、またはマウンテンビューの巨人のサービスへのアクセスに関する問題が発生しなくなります。あなたがそれが有用であると感じて、彼らが必要とするチュートリアルまたはソーシャルネットワークを共有することを望みます:Facebook、Twitter、またはGoogle+。


0

ChromeはChromiumベースのブラウザであり、Chromiumベースのブラウザは一度に最大6つのオープンソケット接続のみを許可します。7番目の接続が開始すると、アイドル状態になり、実行中の6つのうちの1つが停止するのを待ってから停止します。実行を開始します。したがって、「利用可能なソケットを待っています」というエラーコードは、7番目は6つのソケットのいずれかが利用可能になるのを待ってから実行を開始します。

あなたはどちらか

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.