CGIのCPU使用率を下げるには?

[上に] [前に] [次に]
おおもり 2000/05/17(水) 00:20:31
ネットサーフレスキューさんのショッピングバスケットバージョン3
http://www.rescue.ne.jp/cgis/cargo3/ を使おうとしているのですが
CPU使用率(telnetを使ってtopで見ると)が凄いのです。
(ソフトのせいではないと思いますが)
かごに入れるとき 削除するとき 最後の注文のときなど cargo.cgi
が動くときに ・ ・ ・ ・ ・ %CPU  %MEM   TIME COMMAND
と並んだ%CPUのところが80%以上になることがあります。
共用サーバーですので使用禁止にならないかと心配で質問しました。
商品ファイル数が多くてこのようなことになるのかもしれません。
CSV形式のファイルが5個ありそれぞれが80KBぐらいあります。
設置と改造が少しできるレベル(<-自分)で負荷を下げる方法がありましたら
どなたかご教示下さいませ。
有名なところ(レスキューさん)ですしその辺は考えられていると思いますので
無理なのでしょうか。
よろしくお願いします。

D.D. 2000/05/17(水) 01:17:11
Perlを使っていると勝手に解釈しますが、mod_perlとかはどーでしょうか?

D.D. 2000/05/17(水) 01:18:33
あ、Apacheを使っていて、それの管理者権限がある場合です。
まあ、管理者権限は必須ではないのですが。
# そういうApacheが使えるならば、ですけど。

おおもり 2000/05/17(水) 01:58:21
お答えありがとうございます。
サーバーはApacheですが管理者ではありませんので。^^;
mod_perl というのは聞いたことしかありませんが1ユーザーの希望では
組み込んではもらえないのではないかと思います。big.or.jpです。

びび 2000/05/17(水) 02:39:09
>有名なところ(レスキューさん)ですしその辺は考えられていると思いますので
>無理なのでしょうか。

はっきりいって、レスキューさんとこのCGIはあまりデキがよくないです。

B-Cus 2000/05/17(水) 14:20:20
> %CPUのところが80%以上になることがあります
そもそも、CPU 利用率って負荷がかかっているかどうかの
指標になり得るんでしょうか?

> CSV形式のファイルが5個ありそれぞれが80KBぐらいあります。
dbm 形式にして、tie (dbmopen) でデータをいじくるか、
require "datafile" とするだけでデータがセットできる
ようなデータファイルの形式にするとか。要は
  %data=(
    Book=>{
      Value=>1500,
      Tax=>1,
      Num=>10,
    },
    Bag=>{
      Value=>23000,
      Tax=>0,
      Num=>20,
    },
  );
とかいうファイルを作っておいて、perl が直接解釈
できるようにしておく。

# dbm ではリファレンス情報が保存されなかったはず。

ふじ 2000/05/17(水) 15:26:11
CPU使用率が高い
↑他のプロセスが暇だから、多くのCPU時間をOSが割り当ててくれている。
てこともあるので、一概に負荷が高いとは言えないのでは。

それはそれとして、UNIXのApacheなら
RLimitCPUとかいうディレクティブがあるようです。
#使ったこと無いから効果の程は分かりませんが。

http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#rlimitcpu

おおもり 2000/05/17(水) 16:26:36
お答えありがとうございます。

>そもそも、CPU 利用率って負荷がかかっているかどうかの
>指標になり得るんでしょうか?

違いますか。勉強不足でして、ただ数値が大きかったため、驚いた
のです。通常の掲示板などでは数%でしたので。

ふじさんの
>↑他のプロセスが暇だから、多くのCPU時間をOSが割り当ててくれている。
>てこともあるので、一概に負荷が高いとは言えないのでは。

とのお答えからしましても、大丈夫なのでしょうか。
たしかに、同じと思える(勝手にです)処理の時でも、時間帯により
40%〜80%とばらつきがありました。

>dbm 形式にして、tie (dbmopen) でデータをいじくるか

私の場合、ローカルで編集してアップロードする必要があるのです。
と言いますか、dbm 形式の CGI を扱ったことがないので。^^;

B-Cus 2000/05/17(水) 22:40:18
> RLimitCPUとかいうディレクティブがあるようです。
これはおそらく、設定した時間以上 CPU を使ったプロセスは
強制終了させられるというもので、プロセスの優先順位を
いじるものではありません。念のため。

> とのお答えからしましても、大丈夫なのでしょうか。
だから、%CPU だけでは大丈夫かどうかは判断
できないんじゃないですか、ということです。

おおもり 2000/05/18(木) 15:10:09
[[解決]]
>だから、%CPU だけでは大丈夫かどうかは判断
>できないんじゃないですか、ということです。

はい、わかりました。

すべてのファイルを順番に開いて処理しているようなので
今回の問題はしかたないようですね。
%CPUだけでは、判断できないということがわかりかなりの
収穫でした。
みなさんありがとうございました。

[上に] [前に] [次に]