Apakah ada metode di Linux untuk memeriksa berapa banyak porta yang tersisa tersedia? Saya kadang-kadang melihat kesalahan "Alamat sudah digunakan" sebagai akibat dari kehabisan porta sesaat. Reboot mesin akan menyelesaikan ini, tetapi akan lebih baik untuk menangkapnya sebelum terjadi.
17
Jawaban:
Rentang port ephermal ditentukan dalam
/proc/sys/net/ipv4/ip_local_port_range
. Anda mungkin dapat memperpanjang untuk menjalankan dari 16k ke 64k.Anda dapat melihat jumlah koneksi terbuka menggunakan
netstat -an
. Soket mungkin macet dalam keadaan TIME_WAIT jika Anda membuka dan menutup banyak koneksi. Di beberapa tempat hal ini tidak dapat dihindari, tetapi Anda mungkin perlu mempertimbangkan apakah Anda memerlukan kumpulan koneksi jika ini masalahnya.Jika TIME_WAIT adalah masalahnya, Anda dapat mengatur
net.ipv4.tcp_tw_reuse
/net.ipv4.tcp_tw_recycle
untuk mempercepat pergantian koneksi.sumber
net.ipv4.tcp_tw_recycle
telah dihapus di Linux 4.12/proc/sys/net/ipv4/ip_local_port_range
perlu subset dari 49152-65535. Jadi mengurangi ujung bawah kisaran menjadi kurang dari 49152 memang berisiko.Ingatlah bahwa batas ini berlaku per tupel unik (IP sumber, IP rekan, port peer). Oleh karena itu Anda perlu mengelompokkan output dari
netstat
/ss
dengan masing-masing tupel ini, dan memeriksa seberapa dekat masing-masing grup dengan batas koneksi.Posting ini menjelaskan bagaimana Anda dapat melakukan pengelompokan ini secara lebih rinci. Untuk memeriksa seberapa dekat masing-masing grup dengan batas di Ruby, Anda dapat memproses
ss
output seperti:sumber