投稿日:2003年07月17日 作成鷹の巣

No.11180 Apache2.0で、高負荷なCGIを動作させるための効果的な設定方法は?



Apache2.0で、高負荷なCGIを動作させるための効果的な設定方法は?

No.11180 投稿時間:2003年07月17日(Thu) 10:21 投稿者名:CGIふぁん URL:

Apache2.0で、高負荷のCGIを動作させるのに、設定ファイルのどこの部分を変更すれば、一番効果があるかおしえてください。
よろしくおねがいします。
OS→XP CPU 2.2G メモリ768M です。


設定ファイルのスリム化で

No.11210 投稿時間:2003年07月18日(Fri) 00:21 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> Apache2.0で、高負荷のCGIを動作させるのに、設定ファイルのどこの部分を変更すれば、一番効果があるかおしえてください。
> よろしくおねがいします。
> OS→XP CPU 2.2G メモリ768M です。

難しい質問ですね。

逆引きさせない、余分なモジュールを組み込まない、カスタマイズしないなど、設定ファイルのスリム化でしょうか。
また、メモリをできるだけ開放しておくのも1つの手法だと思います。

最も効果的なのは、コードを簡素化することだと思います。


GZIPの設定というのはどうなるのでしょうか?

No.11215 投稿時間:2003年07月18日(Fri) 09:22 投稿者名:CGIふぁん URL:

> 帯鯖@名古屋です。
>
> > Apache2.0で、高負荷のCGIを動作させるのに、設定ファイルのどこの部分を変更すれば、一番効果があるかおしえてください。
> > よろしくおねがいします。
> > OS→XP CPU 2.2G メモリ768M です。
>
> 難しい質問ですね。
>
> 逆引きさせない、余分なモジュールを組み込まない、カスタマイズしないなど、設定ファイルのスリム化でしょうか。
> また、メモリをできるだけ開放しておくのも1つの手法だと思います。
>
> 最も効果的なのは、コードを簡素化することだと思います。

回答ありがとうございます。逆引きすると速度がおちるんですか?
余計なモジュールを組み込まないというのは、必要ないものは先頭に#つけておきます。
#つけるより、削除の方がいいのでしょうか?
あと、GZIP処理機能が2.0では組み込まれているので使用していますが、実はCGI側でGZIPの設定(GZIPのパス)というのはどうなるのでしょうか?

下に具体的なソース書いておきます。

#################gzip圧縮
#ConfigCGI/gzip圧縮/gzip圧縮使用/_
#ConfigCGI/gzip圧縮を使用するかどうか。使用できる場合は使用した方が表示が速くなります。/数値/選択/必須/$gzip_path
#ConfigCGI/0::使用しない/1::使用する
$gzip_use=0;

#ConfigCGI/gzip圧縮/gzipパス/_
#ConfigCGI/gzipのパス(サーバの環境に合わせてください)/文字/入力/$gzip_use=1
$gzip_path='/bin/gzip';

#ConfigCGI/'sjis'::SJIS/'euc'::EUC/'jis'::JIS
$svr_code='sjis';
#ConfigCGI/基本設定/文字コード2/文字コード1と同じ物を選択してください。/文字/選択/必須
#ConfigCGI/'Shift_JIS'::SJIS/'EUC-JP'::EUC/'ISO-2022-JP'::JIS
$svr_code2='Shift_JIS';

## gzip圧縮
sub contenttype{
$|=1;
print <<"_CT_";
Content-Type: text/html; charset=$svr_code2
_CT_

if($gzip_use == 1 && $gzip_path ne ''
&& $ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/ ){
print <<"_CT_";
Content-encoding: gzip
_CT_
}

if ($meta == 0){
print <<"_CT_";
Content-Language: ja
Pragma: no-cache
Cache-Control: no-cache

_CT_
}
if($gzip_use == 1 && $gzip_path ne ''
&& $ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/ ){
open(STDOUT,"| $gzip_path -1 -c");
}
}

よく一般のプロバイダのHPのスペースでCGIを動作させるときに使用していたソースなんですが、自宅サーバーを立てた場合GZIP処理を使う時に、Apache2.0のGZIP処理の設定とCGI側の設定がやはり必要になってくるのでしょうか?
どうも、よくわからないので教えてください。
よろしくお願いします。
説明が下手で申し訳ありません・・・(^^;


大きな期待はしないでください。

No.11236 投稿時間:2003年07月19日(Sat) 00:24 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> 逆引きすると速度がおちるんですか?

DNS サーバに問い合わせた後にログを書き込みますので、Apache の動作自体は鈍くなります。
ただしこれらは要求を返した後に行なうので、CGI 処理速度というよりも、Apache の問題になります。

> 余計なモジュールを組み込まないというのは、必要ないものは先頭に#つけておきます。
> #つけるより、削除の方がいいのでしょうか?

コメントアウトすれば、起動時に読みこまないだけです。
モジュール本体を消去する必要まではないと思います。

> あと、GZIP処理機能が2.0では組み込まれているので使用していますが、実はCGI側でGZIPの設定(GZIPのパス)というのはどうなるのでしょうか?

> > よく一般のプロバイダのHPのスペースでCGIを動作させるときに使用していたソースなんですが、自宅サーバーを立てた場合GZIP処理を使う時に、Apache2.0のGZIP処理の設定とCGI側の設定がやはり必要になってくるのでしょうか?

その辺りに関しては知りません。ごめんなさい。


ただし、設定ファイルのチューニングのみでは、目に見える程の効果は得られないと思います。
断然に高速化したいのであれば、むしろ、コードの簡素化、処理の単純化をする方がよいと思います。

CGI は、要求ごとにプロセスが発生しますので、メモリを蓄積消費したり、CPU に解釈プロセスが断続的に発生します。
よって、高負荷な CGI ほど(特に連続的にプロセスが入る場合には)、レスポンス問題は避けられない問題になると思います。

変数宣言、値の再代入(メモリ書換え処理)、ファイル I/O、ターゲットファイルの容量(余分なシーク等を避けるため)などをできるだけ少なくし、プロセスの単位を小さくするとよいと思います。そうすれば、1プロセスの処理も早くなりますし、連続的なプロセスも通りやすくなります。
さらに高速化したいのであれば、重複プロセスが立ち上がらないサーブレット/JSP に乗り換えるべきではないでしょうか?


GZIP処理は1度こちらでためしてみます。

No.11285 投稿時間:2003年07月20日(Sun) 08:39 投稿者名:CGIふぁん URL:

> 帯鯖@名古屋です。
>
> > 逆引きすると速度がおちるんですか?
>
> DNS サーバに問い合わせた後にログを書き込みますので、Apache の動作自体は鈍くなります。
> ただしこれらは要求を返した後に行なうので、CGI 処理速度というよりも、Apache の問題になります。
>
> > 余計なモジュールを組み込まないというのは、必要ないものは先頭に#つけておきます。
> > #つけるより、削除の方がいいのでしょうか?
>
> コメントアウトすれば、起動時に読みこまないだけです。
> モジュール本体を消去する必要まではないと思います。
>
> > あと、GZIP処理機能が2.0では組み込まれているので使用していますが、実はCGI側でGZIPの設定(GZIPのパス)というのはどうなるのでしょうか?
>
> > > よく一般のプロバイダのHPのスペースでCGIを動作させるときに使用していたソースなんですが、自宅サーバーを立てた場合GZIP処理を使う時に、Apache2.0のGZIP処理の設定とCGI側の設定がやはり必要になってくるのでしょうか?
>
> その辺りに関しては知りません。ごめんなさい。
>
>
> ただし、設定ファイルのチューニングのみでは、目に見える程の効果は得られないと思います。
> 断然に高速化したいのであれば、むしろ、コードの簡素化、処理の単純化をする方がよいと思います。
>
> CGI は、要求ごとにプロセスが発生しますので、メモリを蓄積消費したり、CPU に解釈プロセスが断続的に発生します。
> よって、高負荷な CGI ほど(特に連続的にプロセスが入る場合には)、レスポンス問題は避けられない問題になると思います。
>
> 変数宣言、値の再代入(メモリ書換え処理)、ファイル I/O、ターゲットファイルの容量(余分なシーク等を避けるため)などをできるだけ少なくし、プロセスの単位を小さくするとよいと思います。そうすれば、1プロセスの処理も早くなりますし、連続的なプロセスも通りやすくなります。
> さらに高速化したいのであれば、重複プロセスが立ち上がらないサーブレット/JSP に乗り換えるべきではないでしょうか?

回答ありがとうございます。返信がおくれましてすいません。
CGI側のGZIP処理は1度こちらでためしてみます。
あと、CGIのソースの見なおしもやってみようと思います。


|目次|掲示板|過去ログ目次|▲頁先頭|