web-dev-qa-db-ja.com

現在開いているHTTP接続の数を確認するにはどうすればよいですか?

サーバーに接続しているユーザーの数を知りたい。私は彗星アプリケーションをしているので、これは重要です

7
Alex

これを行う方法は無数にありますが、

netstat | grep http | wc -l

Httpはステートレスプロトコルであることを覚えておいてください。各行は、timewait状態でしばらくの間ハングするさまざまなファイル(css、画像など)を取得するために複数のソケットを開く1つのクライアントを表すことができます。

25
David

以下は、サーバーの接続数を確認できるnetstatのコマンドの一部です。

サーバーへのアクティブなインターネット接続をすべて表示するには、確立された接続のみが含まれます。

netstat -na

ポート80のサーバーへのアクティブなインターネット接続のみを表示して結果をソートするには、1つのIPからの多数の接続を認識できるようにします

netstat -an | grep :80 | sort

カウントだけでなく、関連するすべてのIPアドレスのリストを表示します。

netstat -n -p | grep SYN_REC | sort -u
5
Stephen Lembert

WebサーバーがApacheの場合、 server-status ページを使用することもできます(有効にした後)。

4
lg.

私はこれが古い質問であることを知っていますが、特定のポートへのすべての着信接続をカウントする整然とした方法を探しているときに、それを見つけました。ポートを包括的に検索する場合の問題は、発信接続も取得して、番号を歪めることです。

例えば:

tcp        0      0 10.224.38.158:8080          10.225.239.6:38194          ESTABLISHED
tcp        0      0 10.224.38.158:8080          10.225.239.6:56825          ESTABLISHED
tcp        0      0 10.224.38.158:51512         10.226.194.28:8080          ESTABLISHED
tcp        0      0 10.224.38.158:51960         10.226.194.28:8080          TIME_WAIT
tcp        0      0 10.224.38.158:46937         10.226.194.28:8080          ESTABLISHED
tcp        0      0 10.224.38.158:51331         10.226.194.28:8080          TIME_WAIT
tcp        0      0 10.224.38.158:8080          10.225.239.6:29634          ESTABLISHED

無差別なgrep -cまたはawk | wc -lは「7」を返しますが、実際には「3」の受信接続しかありません。とにかく、これを行うための適切な方法が見つかりませんでした。私のawk-fuはそうではありませんが、最終的にnetstat -anを選択し、awkを使用して「ローカルアドレス」列のみを出力し、私が探しているポート。

netstat -an | grep -c 8080

出力:91

netstat -an | awk '{print $4}' | grep -c 8080

出力:31

つまり、ポート8080に31個の接続されたソケットがあります。これを行うためのより簡潔な方法を誰かが知っている場合は、それを共有してください。

3
Niall