| ログ解析スクリプトAWStats 7.8ドキュメント |

# ベンチマーク

AWStats更新処理は頻繁に実行されますから、、AWStatsの処理速度と必要とするリフレッシュレートによって、最適な更新処理の間隔を選ぶためにAWStatsの処理速度を知るのが、重要です。
AWStatsの処理速度はAWStatsのバージョンと構成ファイルで指定するとオプション/セットアップに依存します。

## AWStats version 6.0 と通常の構成によるベンチマークの結果です。

- ハードウェア: Athlon 1 GHz / 256MB
- ソフトウェア: Windows 2000 / Perl 5.8 (Cygwin Perl)
- 構成OPTIONS: デフォルト値を使用。LogFormat=1, DNSLookup=0, URLWithQuery=0, URLReferrerWithQuery=0, URLWithAnchor=0, No plugins
- 平均処理速度: 5200行/秒
- その他の条件での処理速度は後述。

## その他重要事項

- ログファイルの大きさは、レコード数の150倍(NCSA common/CLFログファイル)から320倍 (NCSA extended/XLF/ELFログファイル)。
- 1,000 訪問 = 8,000 ページ (つまり8 ページ/訪問) = 64,000行 (つまり8 ヒット/ページ) = 20 MB ファイル => 15 秒 (Athlon 1GHz, Standard Perl 5.8)
- 履歴ファイル(AWStatsデータベース、解析結果を保存する)の大きさは次の通り(月ごとに1ファイル)。 15000+90*x+100*y bytes(ここでxは一意的な訪問者数、yはサイトのページの数)。もし、BuildHistoryFormat=xmlオプションをしていしたら、3倍すること。

警告!　これらはデフォルト構成の標準的なサイトの平均値です。WebサーバやAwstatsの構成とWebサイトの内容により、大きく変動します。

ログ解析ツーネルのベンチマークはDNS逆引きなしで測定されていることを忘れないでください。これは、DNS逆引きが(インターネット網やシステムにより)非常に遅いためです。このためAWStats構成ファイルでDNS逆引きが有効にされると、ログ解析の99%以上の時間を消費します。下のチャートを見て、

- ベンチマーク結果に関する、より現実的な見解を得られます。
- サイトのためのセットアップに関する詳しい情報とアドバイスを得られます。

## AWStatsを良好に実行するための、CPU/パラメタの例

Webサイトのトラフィック | Perlの配布 | パラメタの指定 | 推奨更新間隔 (ログローテイト間隔) | メモリ所要量** | 更新の処理時間***
--- | --- | --- | --- | --- | ---
DNSLookup* | URLWithQuery | URLReferrerWithQuery
0 - 1,000 訪問/月 | 任意 | 0 (or 2) | 0 or 1 | 0 or 1 | 1回/日 ログファイルは0-1 MB 2000 行 | 4 MB free | 1秒
1 | 0 or 1 | 0 or 1 | 1回/日 ログファイルは0-1 MB 2000 行 | 4 MB free | 2分
1,000 - 10,000 訪問/月 | 任意 | 0 (or 2) | 0 or 1 | 0 or 1 | 1回/日 ログファイルは1-10 MB 2000-20000 行 | 4-8 MB free | 1秒-10秒
1 | 0 or 1 | 0 or 1 | 1回/日 ログファイルは1-10 MB 2000-20000 行 | 4-8 MB free | 2分-10分
10,000 - 100,000 訪問/月 | 任意 | 0 (or 2) | 0 or 1 | 0 or 1 | 1回/日 ログファイルは10-100 MB 20000-200000 行 | 8-32 MB free | 10秒-120秒
1 | 0 or 1 | 0 or 1 | 1回/日 ログファイルは10-100 MB 20000-200000 行 | 8-32 MB free | 10分-50分
100,000 - 500,000 訪問/月 | 任意 | 0 (or 2) | 0 | 0 or 1 | 1回/6時間 ログファイルは24-96 MB 50000-300000 行 | 16-92 MB free | 30s-3分
1 | 0 | 0 or 1 | 1回/6時間 ログファイルは24-96 MB 50000-300000 行 | 16-92 MB free | 15分-60分
500,000 - 2,000,000 訪問/月 | ActiveStateの問題点については次のセクションを参照。 | 0 (or 2) | 0 | 0 | 1回/6時間 ログファイルは96-384 MB 300000-1200000 行 | 64-256 MB free | 3分-12分
2,000,000 - 4,000,000 訪問/月 | ActiveStateの問題点については次のセクションを参照。 | 0 (or 2) | 0 | 0 | 1回/6時間 ログファイルは384-768 MB 1200000-2400000 行 | 256-512 MB free | 12分-24分
+4,000,000 訪問/月 | ActiveStateの問題点については次のセクションを参照。 | 多量のメモリを搭載した専用サーバを使用する場合には、AWStatsは良い選択です。そうでなければ、Webalizerのような「単純な解析ツール」つまり、少ない機能で、速いツールを使用してください。

- *次の場合は、DNSLookupパラメタを0 (または2)に設定すること。
  - DNSの逆引きがすでに実行されたログファイルを使用する場合、
  - 250,000訪問/月以上のアクセスがある場合。
  注意: 国別レポートは、'geoip'または 'geoipfree'プラグインを有効にすれば、DNSの逆引きがなくても可能です('geoip'または 'geoipfree'プラグインのほうが正確で高速です)。
- **更新処理で使用可能なMB単位のメモリで、ハードウェアのメモリ量ではありません !
  警告: URLWithQueryやURLReferrerWithQueryオプションを指定したり、URLQuerySeparatorsを正しく指定していないと、この値は劇的に増加します。
- ***DNSLookupを1にしたときは、実行時間はとても長くなります。実行時間のほとんどは、DNSへの問い合わせの時間になるからです。DNSLookupを0 (または2) として、Athlon 1GHz/256MB, Cygwin Perl 5.8, LogFormat=1で計測しています。

## AWSTATSをうまく使うための注意

- AWStatsのDNSLookupは無効にすること(DNSLookupに1を指定してはならない)。「国別」レポートが必要な場合、DNS逆引きでなくMaxmind databaseの'geoip'または 'geoipfree'プラグインを推奨します。これらのプラグインの方が正確でネットワーク問い合わせが発生しないので高速です(DNS逆引きを有効にすると、ログ解析速度は40から100倍も遅くなります。本当に必要な場合のみに使用ください)。DNS逆引きも'geoip'や'geoipfree'プラグインも使用しない場合、「国別」レポートは指定できますが、'geoip'または 'geoipfree'プラグインを指定したときに比べ不正確で、ログ上ですでにホストアドレスが解決している場合のみ有効です(このためには、webサーバーにアドレス解決を実行させる必要があり、サーバーの負荷が増加します)。
- URLWithQuery, URLReferrerWithQueryおよびURLWithAnchorパラメタには注意してください(これらのパラメタの意味が分からない場合は0に指定してください)。webサイトのURLのシンタクスを確認して、URLQuerySeparatorsの指定が必要か確認してください。本当にURLWithQuery=1とする必要がある場合、URLWithQueryWithOnlyFollowingParametersやURLWithQueryWithoutFollowingParametersが適切に設定されているか確認してください。
- 最新バージョンのPerlを使ってください(例えば、Perl 5.8は5.6より5%高速になりました)。そして、もっと重要なのは、大きいログファイルには、ActiveStateでなく標準のPerlディストリビューションを使用してください。これは、ActiveState 5.006(そして、おそらく、他のバージョンでも)非常に重要なメモリホールの問題があり、解析の速度がどんどん遅くなり、メモリをすべて使いついには、0行/秒になってしまいます。コマンドラインで-showstepsオプションを加えることによって、速度の低下を確認することができます。速度は数Gigabyteのログファイルでも、上記の値に一定であるべきです。(訳注:5.006というのはActiveStateのバージョンでなく、標準のPerlと思われるがこれに対応するビルドもない。Build 607 がv5.5.650に対応していて、2000年2月にでている。これに対応するバグの記述はない。)
- ログ・ローテート(FAQ-SET500を参照)をこまめに行い、AWStatsの実行間隔を短くしましょう。(crontabやスケジューラから実行します。FAQ-SET500を参照)。AWStatsの起動間隔を短くするほど、AWStatsが処理するログの行数が減ります。また、これによりActiveStateメモリ問題もを解決できます(次のアドバイスを見てください)。
- HostAliasesパラタメが完全か確認してください。
- AWStatsの最新バージョンを使いましょう(例えば、AWStats 6.0は5.9より15%高速です)。
- また、おたくユーザならば、オプションを変えてPerlを再コンパイルしましょう。例えば、「use64bitint=define usemymalloc=y」を指定すると10%高速化できます。

Article written by Laurent Destailleur.
Follow @awstats_project