web-dev-qa-db-ja.com

Apacheログから同時ユーザー数を決定する方法

3か月のApacheログがあり、受信した同時接続の最大数を判別する必要があります。

AWStatsを使用しましたが、これが生成するものではないと思います。ログからこの種の情報を提供する別のツールはありますか?

3
ShaneC

いくつかの仮定を行わずに、デフォルトの共通または結合ログ形式でそれを行うことはできません。たとえば、すべての応答に500ミリ秒かかると仮定すると、1秒あたりのログ行数を取得して、半分に分割できます。

おそらく最も簡単なのは、muninやcactiなどを使用してmod_statusから値をポーリングすることです。または、今後数日間で数十のサンプルのnetstat出力を監視し、それを使用して、サイトのトラフィックに対する同時接続の大まかな比率を見積もることができます。

1
cagenut

netstat -n -tの出力を時間の経過とともに見ることができます。ポート80の接続数ESTABLISHEDは、現在の同時接続数です(おおよそ)。この種のデータを収集するツールはたくさんあります。 Gangliaを使用します。これにより、「tcpconn」モジュールを使用すると、さまざまなネットワーク統計が得られます。

0
larsks

私が知っているわけではありません-最善の解決策はnetstatをポーリングするか、サーバーステータスを調べることですが、これは履歴データにはあまり便利ではありません。

標準のログファイルしかない場合は、そこにも多くの情報はありませんが(サイトが常に非常に、非常に、非常に遅い場合を除いて)、少なくとも同時接続の見積もりを計算することはできます。ファイルを%tで並べ替えてから、各レコードを調べて重なりを解決する必要があります。些細なコードではありません。

より単純なアプローチでは、1時間あたりのヒット数に平均応答時間を掛けてから、1時間の秒数で割ることができます。もちろん、これはすべてのリクエストが等間隔に配置されていることを前提としていますが、スケーリング係数を計算することもできます(上記のように現在の接続数を測定することで)。ただし、もちろん、(%Dではなく)%Tのみを記録している場合、丸めによって推定の精度が失われます(サイトがひどく遅い場合を除きます)。

0
symcbean