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つの手法だと思います。
最も効果的なのは、コードを簡素化することだと思います。
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 に乗り換えるべきではないでしょうか?
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のソースの見なおしもやってみようと思います。