RSHはstderrソケットのクローズを遅らせますか?

RSHはstderrソケットのクローズを遅らせますか?

環境: CentOS 6.6

この簡単なテストを実行するときmyclient

while true; do rsh myserver "echo OK"; done

約500回の繰り返し後、サーバーにポートが不足しました。

netstat -anpサーバーに表示される内容:

tcp        0      0 myserver:1008              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:975               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:998               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:991               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1007              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1000              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:990               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:979               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1003              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:988               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:984               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1002              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:997               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1019              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:995               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:993               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1004              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1017              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1013              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1011              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1009              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:994               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:987               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:986               myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1012              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1010              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:1014              myclient:922              TIME_WAIT   -
tcp        0      0 myserver:996               myclient:922              TIME_WAIT   -

922RSH stderrポート(wiresharkを使用したモニタリング)。

約1分後、サーバーのソケットが閉じて新しい接続が確立されることがあります。

したがって、クライアントまたはサーバーがこれらのソケットを正しく閉じることができず、タイムアウトする可能性があります。

これはrshのバグですか?

この問題を解決する方法はありますか? BSDのrshには--no-stderrオプションがありますが、Linuxにはオプションがないようです。

答え1

以前もこの問題がありました... TIME_WAITはTCP / IPのアーティファクトなので、使い続けるだけです。 / procで調整できます(参照:サーバー障害 23385)しかし、より良いアプローチは、必要なだけ長く動作する永久ソケットを開くソリューションです。

  生成された行数ssh myhost '同時に行を読む。 echo ":$line" 完了;'

これにより、クライアントがサーバーに送信する内容に応じて、多くの接続を実行できるようになります。

関連情報