Rumah >pembangunan bahagian belakang >Golang >Mengapa Permintaan `http.Get` Go Gagal dengan Ralat 'Tetapan Semula Sambungan oleh Rakan Sebaya' Merentasi Benua?
Go's http.Get, Concurrency, and Connection Reset oleh Peer
Soalan:
Semasa menggunakan rutin dan saluran Go untuk muat turun halaman web yang cekap, mengapa sesetengah permintaan gagal dengan "sambungan reset by peer" ralat semasa menjalankan dari pelayan di benua lain?
Jawapan:
Ralat "sambungan semula oleh peer" menunjukkan bahawa pelayan jauh telah sengaja atau secara tidak sengaja menamatkan sambungan disebabkan oleh keterbatasan sumber atau permulaan sambungan yang berlebihan. Untuk menangani isu ini:
1. Optimumkan Tahap Konkurensi:
Daripada memulakan banyak sambungan selari (1000-2000), percubaan dengan tahap konkurensi yang berbeza untuk menentukan nombor yang paling cekap. Konkurensi yang terlalu tinggi boleh menyebabkan penetapan semula sambungan.
2. Tetapkan Transport.MaxIdleConnsPerHost:
Konfigurasikan nilai Transport.MaxIdleConnsPerHost agar sepadan dengan tahap konkurensi anda. Apabila nilai ini lebih rendah daripada bilangan sambungan serentak, sambungan pelayan mungkin ditutup selepas setiap permintaan dan perlu dibuka semula. Proses pembukaan dan penutupan berulang ini boleh memperlahankan kemajuan dan berkemungkinan melebihi had sambungan pelayan.
3. Kelewatan Permulaan Sambungan:
Jika isu berterusan walaupun menetapkan MaxIdleConnsPerHost dengan sewajarnya, pertimbangkan untuk memperkenalkan sedikit kelewatan antara permulaan sambungan untuk mengelakkan mencetuskan tetapan semula sambungan daripada pelayan.
Atas ialah kandungan terperinci Mengapa Permintaan `http.Get` Go Gagal dengan Ralat 'Tetapan Semula Sambungan oleh Rakan Sebaya' Merentasi Benua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!