Chrome macet setelah sejumlah data ditransfer - menunggu soket yang tersedia

101

Saya memiliki game browser dan baru-baru ini saya mulai menambahkan audio ke game tersebut.

Chrome tidak memuat seluruh halaman dan terhenti di "91 requests | 8.1 MB transferred"serta tidak memuat konten lagi; dan bahkan merusak situs web di semua tab lain, mengatakan Waiting for available socket.

Setelah 5 menit (tepatnya) data dimuat.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Ini tidak terjadi di browser lain mana pun.

Menghapus satu file MP3 (yang terbaru ditambahkan) memperbaiki masalah, jadi apakah itu mungkin masalah batas data?

Foxhoundn
sumber
1
Apakah Anda mengajukan atau menemukan laporan bug untuk ini? Kami melihat perilaku yang persis sama (perlu memeriksa apakah # permintaan atau byte yang ditransfer cocok tetapi sebaliknya perilaku dan kesalahan sama persis)
Jan
1
Sepertinya ini masalah yang umum - lihat code.google.com/p/chromium/issues/detail?id=324653 Lihat code.google.com/p/chromium/issues/detail?id=324653 apa yang sebenarnya terjadi. Tetapi jika Anda mencapai batas soket terbuka maka sebenarnya bahkan browser lain memiliki batasan jumlah koneksi ke satu domain. Anda memiliki dua opsi - pastikan bahwa Anda hanya memiliki beberapa permintaan simultan yang aktif (buat serialisasi; jangan paralel); atau pisahkan server Anda menjadi subdomain dan keluarkan permintaan ke subdomain yang berbeda.
Jan
5
Kasus khusus, tetapi jika Anda baru saja memulai ulang Chrome dan memiliki banyak tab yang terbuka ke server yang memerlukan otentikasi HTTP dasar, Anda mungkin mendapatkan kesalahan ini karena salah satu tab latar belakang Anda telah memunculkan dialog otentikasi. Periksa semua tab terbuka lainnya untuk situs yang dipermasalahkan, login seperlunya, dan lihat apakah masalah telah teratasi.
Nathaniel Heinrichs
Adakah yang tahu ekstensi apa ini untuk melacak data yang dia berikan di tangkapan layar?
AlexioVay
2
@NathanielHeinrichs +1 untuk "kasus khusus" yang mengganggu saya selama 2 minggu terakhir. Persis seperti itulah yang terjadi pada saya, dan sekarang saya tahu mengapa! Terima kasih.
Marcus

Jawaban:

68

Sepertinya Anda mencapai batas koneksi per server. Saya melihat Anda memuat banyak file statis dan saran saya adalah memisahkannya di subdomain dan menyajikannya langsung dengan Nginx misalnya.

  • Buat subdomain bernama img.yoursite.com dan muat semua gambar Anda dari sana.

  • Buat subdomain bernama scripts.yourdomain.com dan memuat semua file JS dan CSS Anda dari sana.

  • Buat subdomain bernama sounds.yoursite.com dan muat semua MP3 Anda dari sana ... dll ..

Nginx memiliki opsi bagus untuk langsung melayani file statis dan mengelola cache file statis.

Predte4a
sumber
11
Ini tidak mengubah apapun. Letakkan saja beberapa domain palsu di file host Anda dan gunakan sebagai pengganti localhost.
Predte4a
Bukan pilihan bagiku. Saya mencoba menyajikan video dari server rumah saya melalui web (saat saya sedang bekerja).
Sridhar Sarnobat
4
Jika httpd (yaitu apache) dapat menangani ratusan sim. koneksi dan hanya Crome yang membatasinya, ini bukan solusi. Dalam kasus saya, ini adalah 6 soket per profil, jadi saya dapat membuka 6 lagi di profil anonim, dll. Ini adalah solusi stackoverflow.com/a/29639535/904846 yang dapat diterima sebagai jawaban terbaik.
dmnc
145

Penjelasan:

Masalah ini terjadi karena Chrome mengizinkan hingga 6 koneksi terbuka secara default. Jadi jika Anda streaming beberapa file media secara bersamaan dari 6 <video>atau <audio>tag, koneksi ke-7 (misalnya, gambar) hanya akan hang, sampai salah satu soket terbuka. Biasanya, koneksi terbuka akan ditutup setelah 5 menit tidak aktif, dan itulah mengapa Anda melihat .png Anda akhirnya dimuat pada saat itu.

Solusi 1:

Anda dapat menghindari ini dengan meminimalkan jumlah tag media yang menjaga koneksi tetap terbuka. Dan jika Anda perlu memiliki lebih dari 6, pastikan Anda memuatnya terakhir, atau mereka tidak memiliki atribut seperti preload="auto".

Solusi 2:

Jika Anda mencoba menggunakan beberapa efek suara untuk game web, Anda dapat menggunakan API Audio Web . Atau untuk menyederhanakan, gunakan saja pustaka seperti SoundJS , yang merupakan alat hebat untuk memainkan banyak efek suara / trek musik secara bersamaan.

Solusi 3: Buka paksa Soket (Tidak disarankan)

Jika harus, Anda dapat membuka paksa soket di browser Anda (Hanya di Chrome):

  1. Buka bilah alamat dan ketik chrome://net-internals.
  2. Pilih Socketsdari menu.
  3. Klik pada Flush socket poolstombol tersebut.

Solusi ini tidak disarankan karena Anda seharusnya tidak mengharapkan pengunjung mengikuti petunjuk ini untuk dapat melihat situs Anda.

Marquizzo
sumber
13
Meskipun jawaban yang diterima memberikan informasi yang secara umum baik, ini adalah jawaban terbaik.
taco
1
Baru saja menginstal Neo4J 3.0.4 dan saat membuka localhost: 7474 dikatakan menunggu soket yang tersedia, mencoba menyiram masih tidak berfungsi dan dalam daftar kumpulan mengatakan 6 aktif dan 2 menunggu untuk situs ini
Adeem
Pembilasan kolam soket juga tidak berfungsi untuk saya (Saya memainkan bagian kecil dari beberapa <video>elemen HTML5 dan mencapai batasnya.
Sridhar Sarnobat
Dalam kasus saya ada banyak tab yang terbuka dan polling ke server, menutup semua tab dan sekarang sudah bagus.
igaurav
Aplikasi lama kami telah meminta gambar (zoom in / out.png dll) dari server publik (yang pasti tidak lagi didukung - menyebabkan banyak laporan kesalahan). Semua permintaan ke server tersebut macet sebagai "Tertunda" di Chrome dan itu hanya akan mengirim kembali kode status HTTP 502 setelah sekitar dua menit. Ini membuat aplikasi hang dan tidak dapat meminta gambar dari server kami sendiri karena tersumbat saat meminta gambar ini. Jawaban bagus - bantu saya melacaknya!
Francis Dean
13

Pesan:

Menunggu soket tersedia ...

ditampilkan, karena Anda telah mencapai batas di ssl_socket_pool baik per Host, Proxy atau Group.

Berikut jumlah maksimum koneksi HTTP yang dapat Anda buat dengan browser Chrome:

  • Jumlah koneksi maksimum per proxy adalah 32 koneksi. Ini dapat diubah dalam Daftar Kebijakan .
  • Maksimum per Host: 6 koneksi.

    Ini kemungkinan besar di-hardcode di kode sumber browser web, jadi Anda tidak dapat mengubahnya.

  • Total 256 koneksi HTTP yang dikumpulkan per browser.

Sumber: Jaringan perusahaan untuk perangkat Chrome

Batas di atas dapat diperiksa atau dihapuskan di chrome://net-internals/#sockets(atau secara real-time di chrome://net-internals/#events&q=type:SOCKET%20is:active).


Masalah Anda dengan audio dapat terkait dengan bug Chrome 162627 di mana audio HTML5 gagal dimuat dan mencapai koneksi simultan maksimum per server: proxy. Ini masih masalah aktif pada saat penulisan (2016).

Masalah yang jauh lebih lama terkait dengan permintaan video HTML5 tetap tertunda , lalu mungkin terkait dengan Masalah # 234779 yang telah diperbaiki 2014. Dan terkait dengan SPDY yang dapat ditemukan di Masalah 324653: Masalah SPDY: menunggu soket yang tersedia , tetapi ini sudah diperbaiki di 2014, jadi mungkin itu tidak terkait.

Masalah terkait lainnya yang sekarang ditandai sebagai duplikat dapat ditemukan di Masalah 401845: Kegagalan memuat metadata audio sebelumnya. Memuat hanya 6 dari 10+ yang terkait dengan masalah dengan kode pemutar media meninggalkan banyak permintaan yang dijeda berkeliaran.


Ini juga mungkin terkait dengan beberapa adware Chrome atau ekstensi antivirus yang menggunakan soket Anda di latar belakang (seperti Sophos atau Kaspersky ), jadi periksa aktivitas Jaringan di DevTools .

kenorb
sumber
1
Bagaimana saya bisa mengubah 6 per server menjadi 8 per server karena tampaknya beberapa perangkat lunak yang saya gunakan membutuhkan 8 sehingga 2 tetap tertunda dan situs tidak pernah dimuat
Adeem
@Adeem Saya rasa Anda tidak dapat mengubahnya, saya yakin ini telah di-hardcode dalam kode sumber. Anda dapat melaporkan masalah yang menjelaskan skenario spesifik Anda.
kenorb
1
chrome: // net-internals / # events & q = type: SOCKET% 20is: tautan aktif tidak mutakhir di Chrome terbaru
pyrytakala
6

solusi sederhana dan benar adalah tunda preload file audio dan video Anda dari pengaturan dan periksa kembali halaman Anda masalah Anda menunggu soket yang tersedia akan teratasi ...

jika Anda menggunakan jplayer maka ganti preload: "metadata" ke preload: "none" dari jplayer File JS ...

preload: "metadata" adalah nilai default yang memutar file audio / video Anda pada pemuatan halaman, itulah mengapa google chrome menampilkan kesalahan "menunggu soket yang tersedia"

Najam ali shahid
sumber
0

Pikiran pertama kami adalah bahwa situs tersebut sedang down atau sejenisnya, tetapi sebenarnya ini bukan masalah atau kecacatan. Juga bukan masalah karena koneksi sederhana saat diuji di bawah Firefox, Opera atau layanan Explorer terbuka seperti biasa.

Kesalahan di Chrome menampilkan tanda yang mengatakan "Situs ini tidak tersedia" dan klarifikasi dengan legenda "Kesalahan 15 (net :: ERR_SOCKET_NOT_CONNECTED): Kesalahan tidak dikenal". Kesalahan cukup biasa terjadi di Google Chrome, lebih tepatnya dalam pembaruannya, dan solusinya adalah memulai ulang komputer.

Karena solusi parsial tidak banyak, kami menawarkan tutorial untuk Anda memecahkan masalah dalam waktu kurang dari satu menit. Untuk menghindari masalah ini dan memastikan bahwa layanan yang biasanya terbuka di Google Chrome harus memasukkan yang berikut ini ke dalam bilah alamat: chrome: // net-internals (lalu beri "Enter"). Mereka kemudian harus pergi ke "Socket" di menu sebelah kiri dan memilih "Flush Socket Pools" (lihat screenshot berikut untuk memandu http://www.fixotip.com/how-to-fix-error-waiting-for -available-sockets-in-google-chrome / ) Masalah ini telah terpecahkan dan tidak lagi mengalami masalah dalam mengakses Gmail, Google, atau layanan apa pun dari raksasa Mountain View. Saya harap Anda merasa berguna dan berbagi tutorial dengan siapa yang mereka butuhkan atau jejaring sosial: Facebook, Twitter atau Google+.

John
sumber
0

Chrome adalah browser berbasis Chromium dan browser berbasis Chromium hanya mengizinkan maksimum 6 koneksi soket terbuka pada satu waktu, ketika koneksi ke-7 dimulai itu hanya akan diam dan menunggu salah satu dari 6 yang berjalan berhenti dan kemudian akan Mulai berlari. Karenanya kode kesalahan 'menunggu soket yang tersedia' , yang ke-7 akan menunggu salah satu dari 6 soket itu tersedia dan kemudian akan mulai berjalan.

Anda juga bisa

Yash
sumber