サーバーに接続しているユーザーの数を知りたい。私は彗星アプリケーションをしているので、これは重要です
これを行う方法は無数にありますが、
netstat | grep http | wc -l
Httpはステートレスプロトコルであることを覚えておいてください。各行は、timewait状態でしばらくの間ハングするさまざまなファイル(css、画像など)を取得するために複数のソケットを開く1つのクライアントを表すことができます。
以下は、サーバーの接続数を確認できるnetstatのコマンドの一部です。
サーバーへのアクティブなインターネット接続をすべて表示するには、確立された接続のみが含まれます。
netstat -na
ポート80のサーバーへのアクティブなインターネット接続のみを表示して結果をソートするには、1つのIPからの多数の接続を認識できるようにします
netstat -an | grep :80 | sort
カウントだけでなく、関連するすべてのIPアドレスのリストを表示します。
netstat -n -p | grep SYN_REC | sort -u
WebサーバーがApacheの場合、 server-status ページを使用することもできます(有効にした後)。
私はこれが古い質問であることを知っていますが、特定のポートへのすべての着信接続をカウントする整然とした方法を探しているときに、それを見つけました。ポートを包括的に検索する場合の問題は、発信接続も取得して、番号を歪めることです。
例えば:
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個の接続されたソケットがあります。これを行うためのより簡潔な方法を誰かが知っている場合は、それを共有してください。