Return-Path: Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 21059 invoked by uid 500); 7 Nov 2002 07:07:08 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 21048 invoked by uid 500); 7 Nov 2002 07:07:08 -0000 Delivered-To: apmail-httpd-2.0-cvs@apache.org Date: 7 Nov 2002 07:07:04 -0000 Message-ID: <20021107070704.440.qmail@icarus.apache.org> From: yoshiki@apache.org To: httpd-2.0-cvs@apache.org Subject: cvs commit: httpd-2.0/docs/manual/vhosts fd-limits.xml.ja fd-limits.html.ja.jis X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N yoshiki 2002/11/06 23:07:04 Modified: docs/manual/vhosts fd-limits.html.ja.jis Added: docs/manual/vhosts fd-limits.xml.ja Log: New XML. Submitted by: Hiroaki KAWAI Revision Changes Path 1.4 +41 -58 httpd-2.0/docs/manual/vhosts/fd-limits.html.ja.jis Index: fd-limits.html.ja.jis =================================================================== RCS file: /home/cvs/httpd-2.0/docs/manual/vhosts/fd-limits.html.ja.jis,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- fd-limits.html.ja.jis 26 Jul 2002 08:10:41 -0000 1.3 +++ fd-limits.html.ja.jis 7 Nov 2002 07:07:04 -0000 1.4 @@ -1,31 +1,22 @@ - - - - - Apache サーバのバーチャルホストのサポート - - - - - - - -

ファイル記述子の限界

- -

たくさんのバーチャルホストを運用する場合、もし、 - 各バーチャルホストごとに異なるログファイルが指定してあると、 - Apache がファイル記述子 (ファイルハンドルとも呼ばれます) - を使い切ってしまうことがあります。Apache が使用するファイル + +ファイル記述子の限界 - Apache HTTP サーバ

<-

ファイル記述子の限界

+ +

たくさんのバーチャルホストを運用する場合、もし、 + 各バーチャルホストごとに異なるログファイルが指定してあると、 + Apache がファイル記述子 (ファイルハンドルとも呼ばれます) + を使い切ってしまうことがあります。Apache が使用するファイル 記述子の数は、各エラーログファイルにつき 1 つ、他のログファイルの ディレクティブにつき 1 つ、さらに内部で使用する 10 から 20、 の合計になります。Unix オペレーティングシステムではプロセスごとに 使用可能なファイル記述子の数を制限しています。たいていの場合は 64 で、 普通は大きな値のハードリミットまで増やすことができます。

-

Apache は必要に応じて上限を拡大しようと試みますが、 +

Apache は必要に応じて上限を拡大しようと試みますが、 以下のような場合にはうまくいかないかもしれません。

    @@ -37,81 +28,73 @@
  1. 要求されるファイル記述子の数が ハードリミットを超えてしまう。
  2. - +
  3. システムにファイル記述子に関して別の制限が存在してしまっている。 たとえば、stdio ストリームではファイル記述子を 256 以上使えない (Solaris 2)、など。
- 問題が発生した時に取り得る対処方法は次のとおり: + +

問題が発生した時に取り得る対処方法は次のとおり:

    -
  • ログファイルの数を減らす。<VirtualHost> - セクションでログファイルを指定せず、 - メインのログファイルにのみ記録する。 - (これに関する詳しい情報は以下のログファイルの分割を読んでください。)
  • +
  • ログファイルの数を減らす。<VirtualHost> + セクションでログファイルを指定せず、メインのログファイルにのみ記録する。 + (これに関する詳しい情報は以下のログファイルの分割を読んでください。)
  • もし、前述の 1 または 2 の場合であれば、 Apache を起動する前にファイル記述子を増やします。 たとえば次のようなスクリプトを使います。 -
    - #!/bin/sh
    - ulimit -S -n 100
    +

    + #!/bin/sh
    + ulimit -S -n 100
    exec httpd
    -

    +

ファイル記述子の問題についての詳細や、 - オペレーティングシステムごとの解決方法については「ファイル記述子と + オペレーティングシステムごとの解決方法については「ファイル記述子と Apache」の文書を参照してください。

-

ログファイルの分割

+
top

ログファイルの分割

複数のバーチャルホストのログを同じログファイルに収集しようとしているときには、 各バーチャルホストについて統計的な解析を実行するために後でログファイルを 分割したくなるかもしれません。これは以下のようにして実現できます。

まず、バーチャルホストの情報をログのエントリに追加する必要があります。 -これは LogFormat ディレクティブの -%v 変数を使うことでできます。これをログのフォーマット文字列の -先頭に追加します:

- -
- LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
- CustomLog logs/multiple_vhost_log vhost -
+これは LogFormat +ディレクティブの %v 変数を使うことでできます。 +これをログのフォーマット文字列の先頭に追加します:

+ +

+LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
+CustomLog logs/multiple_vhost_log vhost +

これは common log format のログを作成しますが、それぞれの行の先頭に 正規化されたバーチャルホストの名前 -(ServerName +(ServerName ディレクティブに書かれているもの) が付加されます。 -(ログファイルのカスタマイズの詳細については Custom Log Formats を +(ログファイルのカスタマイズの詳細については Custom Log Formats を 読んでください。)

ログファイルを各部分 (バーチャルホスト毎に 1 ファイル) に分けたいときは、 -split-logfile を使って行なうことが -できます。プログラムは Apache 配布の support ディレクトリに -あります。

+split-logfile +を使って行なうことができます。プログラムは Apache 配布の +support ディレクトリにあります。

以下のようなコマンドでこのプログラムを実行します:

-
-split-logfile < /logs/multiple_vhost_log -
+

+split-logfile < /logs/multiple_vhost_log +

このプログラムはバーチャルホストのログファイルの名前とともに実行され、 ログファイルに現れるそれぞれのバーチャルホスト毎に一つのファイルを作成します。 それぞれのファイルは ホスト名.log という名前になります。

- - - +
\ No newline at end of file 1.1 httpd-2.0/docs/manual/vhosts/fd-limits.xml.ja Index: fd-limits.xml.ja =================================================================== ファイル記述子の限界

たくさんのバーチャルホストを運用する場合、もし、 各バーチャルホストごとに異なるログファイルが指定してあると、 Apache がファイル記述子 (ファイルハンドルとも呼ばれます) を使い切ってしまうことがあります。Apache が使用するファイル 記述子の数は、各エラーログファイルにつき 1 つ、他のログファイルの ディレクティブにつき 1 つ、さらに内部で使用する 10 から 20、 の合計になります。Unix オペレーティングシステムではプロセスごとに 使用可能なファイル記述子の数を制限しています。たいていの場合は 64 で、 普通は大きな値のハードリミットまで増やすことができます。

Apache は必要に応じて上限を拡大しようと試みますが、 以下のような場合にはうまくいかないかもしれません。

  1. 利用しているシステムで setrlimit() システムコールが提供されていない。
  2. システム上で setrlimit(RLIMIT_NOFILE) が動作しない (たとえば Solaris 2.3 のように)。
  3. 要求されるファイル記述子の数が ハードリミットを超えてしまう。
  4. システムにファイル記述子に関して別の制限が存在してしまっている。 たとえば、stdio ストリームではファイル記述子を 256 以上使えない (Solaris 2)、など。

問題が発生した時に取り得る対処方法は次のとおり:

  • ログファイルの数を減らす。VirtualHost セクションでログファイルを指定せず、メインのログファイルにのみ記録する。 (これに関する詳しい情報は以下のログファイルの分割を読んでください。)
  • もし、前述の 1 または 2 の場合であれば、 Apache を起動する前にファイル記述子を増やします。 たとえば次のようなスクリプトを使います。 #!/bin/sh
    ulimit -S -n 100
    exec httpd

ファイル記述子の問題についての詳細や、 オペレーティングシステムごとの解決方法については「ファイル記述子と Apache」の文書を参照してください。

ログファイルの分割

複数のバーチャルホストのログを同じログファイルに収集しようとしているときには、 各バーチャルホストについて統計的な解析を実行するために後でログファイルを 分割したくなるかもしれません。これは以下のようにして実現できます。

まず、バーチャルホストの情報をログのエントリに追加する必要があります。 これは LogFormat ディレクティブの %v 変数を使うことでできます。 これをログのフォーマット文字列の先頭に追加します:

LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
CustomLog logs/multiple_vhost_log vhost

これは common log format のログを作成しますが、それぞれの行の先頭に 正規化されたバーチャルホストの名前 (ServerName ディレクティブに書かれているもの) が付加されます。 (ログファイルのカスタマイズの詳細については Custom Log Formats を 読んでください。)

ログファイルを各部分 (バーチャルホスト毎に 1 ファイル) に分けたいときは、 split-logfile を使って行なうことができます。プログラムは Apache 配布の support ディレクトリにあります。

以下のようなコマンドでこのプログラムを実行します:

split-logfile < /logs/multiple_vhost_log

このプログラムはバーチャルホストのログファイルの名前とともに実行され、 ログファイルに現れるそれぞれのバーチャルホスト毎に一つのファイルを作成します。 それぞれのファイルは ホスト名.log という名前になります。