このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

WebSTARとWebSTAR/SSLでのCGI処理について

発言者:福田
( Date Friday, June 26, 1998 15:10:29 )


こんにちは。

CGIについてお聞きしたいのですが、このごろアクセス数の増加に
伴い、CGIの処理がどんどん遅くなっているようなのです。CGIと
いってもアクセスカウンターとショッピングカートのデモくらいし
かないのですが、約1日経過してブラウザー側からサーバにアクセ
スするとアクセスカウンターのおかげで表示までかなりの時間がか
かります。

サーバ側の環境は以下のとおりになります。
・Macintosh Performa 5320(128MB)
・WebSTAR 2.02J (8000K)
・MacParl 5.1.9r4(10000K)

ソフトのメモリの割当に問題があるのでしょうか。または、WebSTAR
の設定でどうにかなるものなのでしょうか。

この問題が解決次第、ショッピングカートをSSLサーバで動かそう
と思っています。WebSTARと同じようにSSLサーバでもCGIが動
くとのことですのでちょっと不安です。その上、通常のWebSTAR
では問題なく走るCGIが、SSLサーバに置くとNetscapeではエラー
(-1701)が起き、Explorerではちゃんと動くといった状態です。

これらについて何か解決策がありましたら、御助言お願い致します。

田中求之 さんからのコメント
( Friday, June 26, 1998 15:19:55 )

アクセスカウンターはどのような処理を行っていますか?

数字の表示でしょうか? それともグラフィックを CGI の中で作成し表示する
というタイプのものですか? 画像を Perl で作成している処理でしたら遅く
なるのも分からないではないですが、普通に考えると、アクセスカウンターぐ
らいで、そんなに遅くなることは考えにくいのですが…

なお、もし CGI の処理の遅さが問題なのであれば、メモリーの割当を変えても
解決しません(多少は早くなるかと思いますが)。

福田 さんからのコメント
( Friday, June 26, 1998 18:10:14 )

>アクセスカウンターはどのような処理を行っていますか?

テキストでの数字表示です。実際私が書いていないのでParlに
ついて詳しいことはいえないのですが、処理的には簡単なこと
をやっているような感じです。

プログラムは以下の通りです。
----------------------------------
#!perl-w
open(IN,"count.dat");
$count=<IN>;
close(IN);
$count++;
open(OUT,">count.dat");
print OUT $count;
close(OUT);
@counts=split(//,$count);
while($#counts<4){
        $count="0$count";
        $#counts++;
}
print"$count";
----------------------------------

現在は応急処置として1日1回再起動するようにしています。
再起動すると復活して普通の速さにもどるのですが・・・。
これってシステム的な問題なのでしょうか?

田中求之 さんからのコメント
( Friday, June 26, 1998 20:00:32 )

>再起動すると復活して普通の速さにもどるのですが・・・。
>これってシステム的な問題なのでしょうか?

その可能性もありますね。

MacPerl や WebSTAR、あるいはシステムの使用メモリーの量が異常に増えている
といった症状は起きていませんか?

福田 さんからのコメント
( Saturday, June 27, 1998 23:52:52 )

>MacPerl や WebSTAR、あるいはシステムの使用メモリーの量が異常に増えている
>といった症状は起きていませんか?

観察している限りではとくに増えていることはありません。
OSが15〜18MB、MacPerl や WebSTARは5000K前後です。
昨日WebSTARのバージョンを2.0Jに戻したら快適に動いています。
ひとまずはこのまま様子をみてみようとは思いますが・・・。

田中求之 さんからのコメント
( Sunday, June 28, 1998 13:22:47 )

WebSTAR のバージョンによって違いが出るというのも不思議な話ですねぇ…??

Plugin はどのようなものを使っていますか?

あと、CGI 以外のページの処理などは速度の低下は起こらないのですね?

福田 さんからのコメント
( Monday, June 29, 1998 11:21:56 )

>Plugin はどのようなものを使っていますか?

WebSTARについているデフォルトのものと、MacPeal用のpeal-Pluginです。
WebSTAR2.0からWebSTAR2.01にバージョンアップしたとき、デフォルトの
Plug-inも1.03から2.01になっていました。これは何か関係しているのでしょ
うか?

>あと、CGI 以外のページの処理などは速度の低下は起こらないのですね?

はい、そうです。CGIを処理するところだけすごく遅くなります。WebSTARの
タイムアウトを150秒にしても間に合わないくらいです。2日に一度Nortonも
かけて、Speed Diskもかけているのですが、このような状態になっています。

田中求之 さんからのコメント
( Monday, June 29, 1998 15:13:15 )

>MacPeal用のpeal-Pluginです。

これって、どういうものですか?(よしもとさんのやつかな?)

福田 さんからのコメント
( Monday, June 29, 1998 15:33:47 )

>これって、どういうものですか?(よしもとさんのやつかな?)

そうです。よしもとさんのところからダウンロードしたPlug-inです。
でもWebSTAR AdminのPlug-in情報をみるとどうも読み込まれてい
ないようです。

休み明けでOSのメモリをみてみたら、25MBまで増大していました。
WebSTAR2.0Jにいたっては39MBにまでなっているのですが・・・。
どうすればよいのでしょうか。

田中求之 さんからのコメント
( Monday, June 29, 1998 15:36:47 )

よしもとさんの Perl plugin はまだベータ段階ですので、こいつがメモリー
リークを引き起こしている可能性も否定できませんね。

どうなんでしょう?>よしもとさん

MacPerl で作った CGI を動かすのでしたら、Perl Plugin は必要ありません。
(MacPerl で CGI 形式で保存しておけばよい)

Perl Plugin を抜いて試してみてもらえますか?

福田 さんからのコメント
( Monday, June 29, 1998 16:10:03 )

>WebSTAR2.0Jにいたっては39MBにまでなっているのですが・・・。

すいません。勘違いでした。WebSTARの割り当てメモリのことです。
すこしあわてぎみです。ちょっと割り当てすぎなのでしょうか。

>Perl Plugin を抜いて試してみてもらえますか?

はい、はずして様子をみてみます。それとシステムの機能拡張をもう一度
見直してみます。最小限のものだけで動かした方がよいのですよね。
とにかく原因を突き止めてみます。

田中求之 さんからのコメント
( Monday, June 29, 1998 16:16:03 )

WebSTAR にどれだけの Max Connection を割り当てているかによって必要な
メモリーは変わってきますので、一概には言えませんが、30Mも割り当てる
必要はないと思います。

ステータスウィンドウのメモリーの表示の部分で2M以上あれば問題はないと
思いますよ。

>それとシステムの機能拡張をもう一度
>見直してみます。最小限のものだけで動かした方がよいのですよね。

システムに不必要なものを入れないことも大切ですが、WebSTAR の Plugin の
使っていないものを抜くということも大切です。インストールしたままの状態です
と、すべての Plugin が入ってしまっていますので、はっきりいって、メモリーの
無駄ですし、余計なトラブルを引き起こすもとになりかねません。絶対に必要なもの
以外は Plugin も外してください。

前薗 健一 さんからのコメント
( Tuesday, June 30, 1998 00:52:35 )

よしもとさんの Perl plug-in のソースは見たことがありますが、memory
leak を起こしそうなコードはないはずです。つまり、それくらいシンプル
ということです。( いい意味でですよ )
Perl plug-in はセッション( スレッド )管理に多少問題はありますが、
Mac OS 8.X で動かすぶんには、全く問題はないはずです。
Mac OS 8.X 以前のスレッドはpreemptive ではないので、スレッドが同時
実行されることはないでしょう。

福田 さんからのコメント
( Tuesday, June 30, 1998 22:50:36 )

アドバイスとおりに不必要なPlug-insをはずして、機能拡張も最小限
で一日ほど稼動いたしました。やはり現状変わらずです。

それでもしかしたらと思うのですが、現在WebSTAR2.0Jを残したまま、
2.01Jと2.1Jをインストールしてどれがいいか試している状態です。
その上、使っているcgiをそれぞれのWebSTARフォルダに入れているの
で(cgiはcgi-binフォルダにいれています)、立ち上がるときにMacParl
が迷って遅くなっている可能性はないのでしょうか?様子をみている限りで
はそれぞれのフォルダのcgiを使っているようなのですが、念のために確認
させて下さい。

また、マシーン上に同じcgiデータが2つ以上ある場合、何か不具合が起こっ
てしまうのでしょうか?現在、バックアップとして同じものをコピーしてい
るのですが、これが何かトラブルの原因になっているのでしょうか?

それともうひとつお聞きしたいもですが、2.1Jをインストールして立ち上
げて外から接続してみると、cgiを認識しないどころか日本語が文字化けを
してしまいます。WebSTARの設定で何かしないといけないのでしょうか?

質問ばかりで申し訳ありませんが、アドバイスをお願い致します。

田中求之 さんからのコメント
( Wednesday, July 01, 1998 00:21:49 )

具体的にどのような状態になっているか(各サーバーの設定も含めて)分かりませんので
一般的な答えしかできませんが、2.0, 2.01, 2.1 の3つを同時に動かしているので
しょうか? それとも交互に切り替えながらでしょうか? 同時に動かすのだと
すれば問題が起きると思いますが…

2.1J の文字化けの件ですが、もしかして SSI ですべてのページを処理するように
していませんか? 2.1 では、SSI をデフォルトのまま使うと、日本語が文字化け
します(SJIS, EUC の場合)。config コマンドで、使用する文字種の設定を
行ってください(変換無しとかなんとか、そういう設定を各 SSI のページに書く
必要があるんですよ)。


福田 さんからのコメント
( Wednesday, July 01, 1998 13:56:03 )

>それとも交互に切り替えながらでしょうか?

はい。交互に切替えながらそれぞれのバージョンをテストして
います。

> 2.1 では、SSI をデフォルトのまま使うと、日本語が文字化け
>します(SJIS, EUC の場合)。

そうだったのですか。さっそく見てみます。cgiに関してはもう
すこしいろいろ試して様子をみようと思います。