Linux サーバーからインターネットに向けて開かれている接続の数を確認するにはどうすればよいでしょうか?

Linux サーバーからインターネットに向けて開かれている接続の数を確認するにはどうすればよいでしょうか?

エンドポイントからの応答時間が、あるサーバーでは特に長く、他のサーバーでは長くないという問題があります。さらに、この問題は「curl 'ww.google.com'」のようにインターネット内のすべてのエンドポイントで発生することがわかりました。さらに分析すると、この問題は特定の時間にのみ発生することがわかりました。そのため、ホストからインターネットへの HTTP 接続をリストする方法を知りたいです。この点について助けてください。

答え1

ローカル Linux マシンからリモート マシンのポート 80 へのアクティブな接続の数を一覧表示する場合は、netstat を使用してアクティブな接続を一覧表示し、Foreign Address 列から特定のポートを取得します。

netstat -tnap | awk '{print$5}' | grep :80 | wc -l

netstat -tnap はすべてのアクティブな接続を表示し、awk を使用して 5 番目の列のみをリストすることで、外部アドレスのポート 80 で行われた接続のみをリストできます。外部アドレスのポート 80 での接続を grep すると、すべてのリモート アドレスが表示され、wc -l にパイプして接続の数を取得できます。

MadHatterが提案したss - socket statisticsを使用することもできます。netstatは廃止され、ssに置き換えられています。

ss -tan | awk '{print$5}' | grep :80 | wc -l

答え2

他の人が示唆しているように、netstat や ss のほかに、lsof(開いているファイルを一覧表示する) が便利だと思います-i。 オプションを使用すると、UNIX ではすべてがファイルであるため、ネットワーク ファイルまたはソケットが一覧表示されます。 を使用すると、それを IPv4 に絞り込み、その後にまたは を-i4付けて、それぞれまたはのポート番号を指定できます。詳細については、ls のマニュアル ページを確認してください。:80:443httphttps

 
[root@kauai tmp]# lsof -i4:80 -n
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
firefox 4128 ダニエル 76u IPv4 111733311 0t0 TCP 192.168.10.103:50500->198.252.206.149:http (確立済み)
firefox 4128 ダニエル 96u IPv4 112109229 0t0 TCP 192.168.10.103:51201->198.252.206.149:http (確立済み)
firefox 4128 ダニエル 108u IPv4 111452598 0t0 TCP 192.168.10.103:50410->198.252.206.149:http (確立済み)
時計アプリ 31704 ダニエル 21u IPv4 126088871 0t0 TCP 192.168.10.103:55146->23.67.61.171:http (確立済み)

[root@kauai tmp]# lsof -i4:443 -n
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
firefox 4128 ダニエル 52u IPv4 125964214 0t0 TCP 192.168.10.103:45435->23.67.118.140:https (確立済み)

関連情報