/proc/sys/net/ipv4/tcp_keepalive_time」です。 "; 2. "/etc/sysctl.conf" ファイルを編集します。構文は "net.ipv4.tcp_keepalive_time=指定された値" です。"/> /proc/sys/net/ipv4/tcp_keepalive_time」です。 "; 2. "/etc/sysctl.conf" ファイルを編集します。構文は "net.ipv4.tcp_keepalive_time=指定された値" です。">

ホームページ >運用・保守 >Linuxの運用と保守 >Linux で TCP 接続が解放されない場合の対処方法

Linux で TCP 接続が解放されない場合の対処方法

WBOY
WBOYオリジナル
2022-07-13 10:53:153739ブラウズ

解決策: 1. キープアライブ設定を適切な値に変更することで、ポート接続をすぐに解放できます。echo を使用して「set tcp_keepalive_time」を設定します。構文は、「echo "値を指定" > /proc/」です。 sys/ net/ipv4/tcp_keepalive_time"; 2. "/etc/sysctl.conf" ファイルを編集します (構文は "net.ipv4.tcp_keepalive_time=指定された値")。

Linux で TCP 接続が解放されない場合の対処方法

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux の tcp 接続が解放されない場合はどうすればよいですか?

問題の説明

開発とテスト中に、接続が解放されていないことがわかりました。サーバーポートが切断され、再度接続されたときに拒否されました。

分析: ポートが 8080 であると仮定して、サーバー上のポート占有率を確認します。

netstat -anp |grep 8080

ポート 8080 が占有されていることがわかり (IP はローカル IP であり、最後の接続であると判断されます)、ステータスは ESTABLISHED ですが、実際には接続は切断されていますが、サーバーはは切断されていません。TCP キープアライブ設定を確認してください。

sysctl -a |grep keepalive

デフォルト設定であることが判明しました

net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75

デフォルトでは、接続が 7200 秒または 2 時間アイドル状態になった後、接続ステータスを確認するためにキープアライブ検出パケットが送信されます。

解決策

解決策:

1. キープアライブ設定を適切な値に変更することで (200 秒に変更するなど)、ポート接続が確立されます。すぐに解放できます。

一時的な修正、echo 経由で tcp_keepalive_time を設定します。

echo "200" >  /proc/sys/net/ipv4/tcp_keepalive_time

2.永続的に有効にするには、/etc/sysctl.conf を編集し、

net.ipv4.tcp_keepalive_time = 200

に追加または変更してからコマンドを実行して、変更した設定を有効にします

推奨される学習: Linux ビデオ チュートリアル

以上がLinux で TCP 接続が解放されない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。