Penyelesaian: 1. Anda boleh melepaskan sambungan port dengan cepat dengan mengubah suai konfigurasi keepalive kepada nilai yang sesuai untuk menetapkan "set tcp_keepalive_time" ialah "echo "specify value" > sys/ net/ipv4/tcp_keepalive_time"; 2. Edit fail "/etc/sysctl.conf", sintaksnya ialah "net.ipv4.tcp_keepalive_time=specified value".
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Penerangan Masalah
Semasa pembangunan dan ujian, didapati sambungan itu telah menolak apabila port pelayan telah diputuskan dan disambungkan semula.
Analisis: Semak penghunian port pada pelayan, dengan anggapan port ialah 8080.
netstat -anp |grep 8080
Didapati bahawa port 8080 telah diduduki (ip adalah ip tempatan dan mesti sambungan terakhir) dan statusnya DITUBUHKAN Walau bagaimanapun, sambungan sebenarnya telah diputuskan, tetapi pelayan telah tidak terputus sambungan. Periksa konfigurasi keepalive TCP.
sysctl -a |grep keepalive
Didapati sebagai konfigurasi lalai
net.ipv4.tcp_keepalive_time = 7200 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_intvl = 75
Secara lalai, paket probe keepalive akan dihantar untuk mengesahkan status sambungan selepas sambungan melahu selama 7200 saat atau 2 jam .
Penyelesaian
Penyelesaian:
1 Dengan mengubah suai konfigurasi keepalive kepada nilai yang sesuai (seperti menukar kepada 200 saat), sambungan port boleh dilepaskan dengan cepat.
Pengubahsuaian sementara, tetapkan tcp_keepalive_time melalui gema.
echo "200" > /proc/sys/net/ipv4/tcp_keepalive_time
2. Untuk berkuat kuasa secara kekal, edit /etc/sysctl.conf, tambah atau ubah suai kepada
net.ipv4.tcp_keepalive_time = 200
dan kemudian laksanakan arahan untuk menjadikan konfigurasi yang diubah suai berkuat kuasa
Pembelajaran yang disyorkan: Tutorial video Linux
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika sambungan TCP tidak dikeluarkan di Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!