こんばんは。

CGIがサーバーに与える負荷について教えてほしいのですが、
今度、多機能な掲示板をHPに数十個のせる事になりました。
公開はしていないのですが、その公開前にCGIが動いた時の
サーバーにかかる負荷がどのぐらいあるか知りたいのですが、
負荷を調べる方法はあるのでしょうか?
当然、サーバーのスペック、アクセス数、回線の太さになどに
よっても変わってくると思いますが、おおまかでよいので知り
たいと思っています。
調べる方法、なんでもいいですので、どうか教えてください。
ちなみにサーバーはFreeBSD4.4です。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

CGIっていっても、言語によって結構不可が違います。


おそらくPerlのことをいってらっしゃるのでしょうが、Perlは実行時にスクリプトをコンパイルしますので、実行バイナリと比べると不利です。

多機能掲示板というとスレッドの位置を変えられたり、簡単に編集できたりとかでしょうが、基本的にはそういう動作は書き込むときと同じ負荷だと思ってください。
多機能となるとファイルサイズが問題になってきますが、じつは一度コンパイルすると、実際はバイナリをキャッシュするそうで、2回目からはコンパイルに時間を取られることなく、ファイルのロード時間だけが問題になると思います。

公開していないということなので、一度に複数の掲示板に人がどさどさ押しかけるなんてことはないでしょう。
数十個とはいいますが、1つのHPにそれだけの掲示板があるのでしょうか?
もしそうなら、その掲示板にはそのHPからしか飛ばないわけですから、せいぜいHPの読者の数しか合計書き込み数はないことになるではないですか。

掲示板の種類が同じでいいなら、掲示板スクリプトは1つにして、データファイルをわけられるようなものにすると、容量節約にもなりますし、バイナリキャッシュも少なくなり実行速度も上昇するでしょう。

調べる方法ってのは難しいですね。
管理者にでもならなければ無理でしょう。

この回答への補足

ありがとうございます。

現在、公開中のサーバーを、違う所に移行したいと思っており、その
ついでに掲示板を数十個つけようかと思っています。
今、公開している方には、1日5000位アクセスが来ているので
移行後、掲示板をたくさん追加する事によって、サーバーに負荷がかか
り、遅くなるのを懸念しています。

レンタルサーバーを借りているので、rootのパスワードを知っているので
そう言う意味では管理者なんですけど、管理者は管理者でも、なんせ、
apache、cgiに関して無知な管理者なもんで…"^_^"
コマンドで、CPUにかかる負荷やメモリの使用量か分かって、アクセス数
から計算して、余裕か、かなり負荷がかかってるかしれたらいいなーって
思いまして…。
コマンド、計算方法知らないんですけど…。

宜しくお願いします。

補足日時:2002/03/04 00:57
    • good
    • 0

mod_perlとは、Apcheのプラグインみたいなものです。


Apache用のモジュールって言った方がいいかも?
Apacheとperlを別々にインストールしてあるだけだと、
CGIにアクセスされるたびにperlのプロセスが立ち上がります。
しかし、mod_perlを用いてApacheのモジュール化にしておくと、
perlのプロセスはあがった(メモリに常駐した)ままになり、
CGIのアクセスが来てもプロセスを立ち上げる時間がないため高速な処理が可能となります。
実際、CGIの処理している時間は短いので、
プロセスを立ち上げるというオーバーヘッドの方が大きく、
CGIの効率が悪くなってしまうため、このようなモジュールが出来たらしいです。

レンタルサーバーなら回線の負荷は大丈夫そうですね。
Apacheとperlを用いてCGIを実行する場合は、特別な理由がない限りmod_perlをおすすめします。
サーバーにもよりますが、Linuxだとmod_perlは標準装備となっていることが多いようです。
    • good
    • 0

サーバーにもよりますが、


もし、Apacheを使ってmod_perlが実装されていた場合、あまり気にしなくていいと思います。
簡単に理由を書きますと『perl実行毎にプロセスがあがらないから』です。

ほんとにCGIの負荷によってサーバーのことが心配になるようなら、
同時に回線の方も気にした方がいいと思います。

この回答への補足

どうも、ありがとうございます。
apacheを使っていて、perlで書いてあります。

mod_perlはどういうものか分からないので調べて見ます。
通常、mod_perlは、普通にインストールして入るものなのですが?
それとも、後でインストールするものなのですか?

回線の方は、レンタルサーバーを使用しているので、恐らく大丈夫だと
思っています。

よろしくお願い致します。

補足日時:2002/03/04 00:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QNm3とNm3/hは違う単位ですか?

書類にはNm3/hとあります。間違って質問したのか頭が少しこんがらがりました。
Nm3はニュートン立方メートルと呼んで力の単位ですか?ではどのように使いますか?
Nm3/hはリューベパーアワーと呼んで気体の体積単位ですか?
このような理解でよろしいのでしょうか?
ご指導よろしくお願いします。

Aベストアンサー

Nm3は、ガスの体積を示し(ノルマル・リューベ)と読みます。
ガスを標準状態(0℃、1気圧)へ換算した単位です。
ボイル・シャルルの法則により、ガスの体積は、圧力が倍になれば、半分になってしまいます。
従って、圧力や温度に左右されない実量を管理する目的をもった単位です。
ガスを扱う設備では、多くがこの単位を使います。
ノルマルは、英語のNormalのことですが、なぜか日本ではこの単位を読むときは「ノーマル」ではなく「ノルマル」と読みます。
また、リューベは、立方メートルを示す産業用語です。

一方、Nm3/h(ノルマル・リューベ・パー・アワー)は、流量を示す単位で、
ガスがその瞬間にどのくらい流れているかを標準状態換算で示す瞬間値です。
たまに慣れている人は、ノルマルを省略するので、注意が必要です。

1Nm3/hの流量で1時間ガスが流れ続けたら、総計1Nm3のガスが流れたことになります。

その他、Nl(ノルマル・リットル)という単位もあり、これも同じように標準状態換算を示します。

Q各CGIのサーバーに与える負荷は・・・?

新しく作るHPにcgi掲示板を10個ほど設置したいのですが、サーバーに与える負荷はどのくらいでしょうか?
この掲示板は画像などをupしたりする機能の無い一番シンプルな物です。
10個も設置するとチャットcgiなどよりも負荷率はかなり上がってしまうのでしょうか?
もし、かなりの負荷のようでしたらレンタルで済まそうと思っているのですが。
あと、このようにcgiを複数設置するサイトを作る際にレンタルサーバーを選ぶポイントなどはありますか?
今のところinfoseekという所を考えているのですが問題ないでしょうか?

Aベストアンサー

通常1つのサーバーに多数のユーザーがcgiを設置するので、よほど変な自作プログラムを組まない限り個人レベルでレスポンスを上下させるほどの大きな負荷は発生させられないかと思います。
あと、cgiは設置するだけでは負荷はかかりません。
なので設置数ではなく、どのくらいの頻度でアクセスされるかが問題です。
設置して運用してみて、重いと判断されたなら別の場所に移転するというような考え方で大丈夫です。

Q流量単位 Nm3→m3換算

流量単位 Nm3からm3への換算が分からず困ってます。

例)発熱量 9700kcal/Nm3のものがあるとして、これをkcal/m3になおしますと、ボイルシャルルの法則RV/T=RV/Tにて、
  0.15*10^6*V/(273+20) = 0.1013*10^6*1/273
  v=0.725 
*圧力0.15MPa  温度20度とします。

  9700÷0.725=13379.3kcal/m3でして
  9700kcal/Nm3→13379.3kcal/m3であってますか?

Aベストアンサー

大雑把にはその理解でいいのですが、
厳密には実在ガスによるずれ、圧縮係数を考慮する必要があります。

9700kcal/Nm3というと都市ガス13A相当になりますが、
13Aの場合一般的にノルマル条件(0℃、1気圧)では圧縮係数が0.99程度になって、
ボイルシャルルの式に対して1%ほど体積が小さく(=熱量が大きく)なります。
精度をどの程度求めるかによりますが、便覧などを参考に、圧縮係数を見積もられることをお勧めします。

また普通は計測された流量(例m3/h)を温度、圧力補正をして
ノルマル流量(例Nm3/h)に換算して表示することが多いです。

QCGIから別サーバーのCGIの呼び出し

以下の二つのサーバーでCGIを動作させようと考えています。

 サーバーA:ユーザーからアクセスできる。
 サーバーB:サーバーAからアクセスでき、ユーザーからはアクセスできない。

この環境で

(1)サーバーAでリクエストを受け、簡単な処理をする。
(2)サーバーA上のCGIからサーバーB上のCGIを呼び出す。
(3)サーバーB上で処理(etc. メールの送信)を行い、処理結果をサーバーAのCGIに返す。
(4)サーバーA上で簡単な処理を行い、結果をユーザーに表示する

というような処理を考えています。
perlでは、このような処理を実装することは可能でしょうか?

サーバーAからサーバーBにあるスクリプトファイルを読み込んで、サーバーAで実行するということはできそうなのですが、サーバーB上のCGIはサーバーBで実行するというようなことができるのかがわかりません。

初心者的な質問で申し訳ありませんが、よろしくお願いします。

Aベストアンサー

 無理やり実装することは可能ですけど、面倒ですよ?
 自分でソケットを開いてHTTPで通信するんです。

QNM850iGへ電話帳データを移したい

今までauのW31SAを使っていましたが、新しくdocomoのノキア・NM850iGを購入しました。docomoの携帯は初めてで新規で購入をしました。

2台両方とも同時に使っていきたいので、今までのW31SAの電話帳データをNM850iGに移したいのですがdocomoショップではNM850iGに対応していないそうで電話帳にデータを移していただけないそうです。
赤外線もついていないし、、、

300件の電話番号やメールアドレスを手で入れるのはあまりにも大変なので、何か移す手段はありませんでしょうか?

どうぞよろしくお願いいたします。

Aベストアンサー

こんばんは、atano2001です。
私も先月NM850iGをドコモショップでFOMAの買い増しをしました。
その時に前のFOMAからNM850iGへ電話帳データを移してもらいましたよ。
メールは駄目でした。
他のドコモショップへ問い合わせしてみたらどうでしょうか?

Qさくらのサーバーでwww配下のcgiを使用し、サーバールートのファイル

さくらのサーバーでwww配下のcgiを使用し、サーバールートのファイルを表示

ルートディレクトリ(wwwフォルダと同じ階層)にテキストファイルを設置し、
www配下に設置したcgiをブラウジングした際に、テキストファイルの内容を表示する仕組みを作ろうとしています。

別のサーバーでは動いているようですが、
なぜかさくらでは変数の値が表示されません。(<hr>は表示されています)

ちなみにcgiのファイルとフォルダのパーミッションは755に設定しています。

わかる方いらっしゃいますでしょうか?
よろしくお願いします。


cgiのソースは下記になります。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#! /usr/bin/perl

open (FILE, "</home/txt1.txt");
$lst = <FILE>;
close(FILE);

open (FILE, "</home/txt2.csv");
$dat = <FILE>;
close(FILE);

print <<END;
Content-Type: text/html; charset=Shift_JIS

<html>
<head>
<title>testcgi</title>
</head>
<body>
$lst
<hr>
$dat
</body>
</html>
END
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

さくらのサーバーでwww配下のcgiを使用し、サーバールートのファイルを表示

ルートディレクトリ(wwwフォルダと同じ階層)にテキストファイルを設置し、
www配下に設置したcgiをブラウジングした際に、テキストファイルの内容を表示する仕組みを作ろうとしています。

別のサーバーでは動いているようですが、
なぜかさくらでは変数の値が表示されません。(<hr>は表示されています)

ちなみにcgiのファイルとフォルダのパーミッションは755に設定しています。

わかる方いらっしゃいますでしょうか?
よろしくお願...続きを読む

Aベストアンサー

>恐れ入りますが、openの成功・失敗の記述方法を教えて頂けないでしょうか?
open(FILE,"filename") || die "I can't open this file";
die 演算子は perl の初歩の初歩。

>パスはあっていました。
No.2さんの言う通りだと思うんですが、もう面倒くせぇから相対パスで指定すれば良いんじゃね?

QアンテナキャッチャーPAX-NMの取り付けについて

BS・CSアンテナを取り付けるためアンテナキャッチャーPAX-NMの購入を考えていますが、普通の取り付けだと窓枠にある“目隠し用柵”が邪魔をして取り付けられません。
窓枠上半分には空間があります。
このアンテナキャッチャーPAX-NMを上下逆にして取り付けられるでしょうか?

Aベストアンサー

こちらのURLを見て、自ら判断して下さい。

https://www.catcher.jp/products/code/PAX-NM

QWindows2000サーバーでは動いていたCGIがWindowsサーバー2003で動きません

ファイルのアップロードをするCGIです。
Windows2000サーバーでは問題なく動いていました。
先日Windows2003に乗り換えたとたん、動かなくなりました。
色々調べて、とりあえずエラーにはならなくなったのですが、正常に実行されないのです。
あやしいところは・・・

binmode(STDIN);
while($remain){$remain-=sysread(STDIN,$buf,$remain);$read_data.=$buf;}
$pos1=$pos2=$pos3=0;
$delimiter="";
$max_count=0;
$sendfilecnt=0;
while(1){
$pos2=index($read_data,"\r\n\r\n",$pos1)+4;
@headers=split("\r\n",substr($read_data,$pos1,$pos2-$pos1));
$filename='';
$name='';
foreach(@headers){
if($delimiter eq''){
$delimiter=$_;
}elsif(/^Content-Disposition: ([^;]*); name="([^;]*)"; filename="([^;]*)"/i){
if($3){
$filename=$3;
if($filename=~/([^\\\/]+$)/){$filename=$1;}
}
}elsif(/^Content-Disposition: ([^;]*); name="([^;]*)"/i){$name=$2;}
}

このへんです。
どうも、$filenameが''(ヌル)のままなので、この後正常にファイルのアップが動かないようなのです。
どなたか詳しい方、ぜひ教えてください。

ファイルのアップロードをするCGIです。
Windows2000サーバーでは問題なく動いていました。
先日Windows2003に乗り換えたとたん、動かなくなりました。
色々調べて、とりあえずエラーにはならなくなったのですが、正常に実行されないのです。
あやしいところは・・・

binmode(STDIN);
while($remain){$remain-=sysread(STDIN,$buf,$remain);$read_data.=$buf;}
$pos1=$pos2=$pos3=0;
$delimiter="";
$max_count=0;
$sendfilecnt=0;
while(1){
$pos2=index($read_data,"\r\n\r\n",$pos1)+4;
@header...続きを読む

Aベストアンサー

#1です。

微妙に間違えました。失礼!

Content-Disposition:.*? name="([^;]*)"; filename="([^;]*)"

ですね。ちょっと試してみてください。ちなみに、()1つなくしちゃったので、1つずれて、$2は$1、$3とかは $2になりますよね。それがめんどうなら、

Content-Disposition:(.*?) name="([^;]*)"; filename="([^;]*)"

でもいいとおもいます。これなら他の変更は不要!

Q分光放射束(W/nm)を放射強度(W/sr)に変換することは可能でしょうか。

光について、まったくの初心者です。
よろしくお願いします。

LED解析装置(2.5インチ積分球、ファイバφ1、分光器)にて、赤外線LEDの測定を行ったところ、
発光スペクトル(nm)と分光放射束(W/nm)のグラフが、測定結果として表示されました。

LEDのデータシートと見比べた時、
発光スペクトル(nm)については、ピーク発光波長λpの項目を見れば
グラフ上、分光放射束(W/nm)が一番強いスペクトルが、ピーク発光波長
と同程度の値でした。

さて、次に分光放射束(W/nm)についてですが、これはデータシートによっては
似たような項目として、放射照度(w)にて表示されていたり、いなかったり…
データシート上、他の物理量的な項目を見ると、放射強度(W/sr)がありました。
何とか分光放射束(W/nm)を放射強度(W/sr)に換算できないかと、
色々調べたのですが、素人の私には理解できない部分が多く困っています。

調べてみたところ、単純に変換は出来そうに無いのですが、どうか皆様宜しくお願いします。

Aベストアンサー

積分球の構造が適切で、測定波長領域で反射率が安定して1.0に近いこと
が保証されていれば、全光束に比例した強度を受光できている
と思いますので、波長積分でいいと思います。
測定システムで、積分機能はないのでしょうか?
エクセルなどで計算してもいいと思いますが。

ただし、正確な値付け ○W というには、何かしらの放射強度が
保証された標準球による比較測定にする必要があると思います。
(測定する条件も極力揃えること。)

Qiswebライト(infoseek楽天の無料レンタルサーバー)のサーバーにCGIを設置したい

はじめまして。

只今、ソシム社の【JavaScript&CGIレッスンブック】でCGIの勉強中です。

iswebライト(infoseek楽天の無料レンタルサーバー)のサーバーにCGIを設置するため、下記のCGIスクリプトをtext03.cgiというファイル名でFFFTPにてアップロードしました(アップロードしたのはtext03.cgiのみでindex.htmlはアップロードしていません )。

#!/usr/local/bin/perl

print"Content-type:text/html\n\n";

$now=localtime(time);

print"$now";

しかし、【呼び出されたURLの表示は拒否されました(403Forbidden)】と表示されます。エラー表示ページには下記(1)~(3)の注意書きがありますが、それぞれ適切な状態にしていると思います。

(1)iswebサイト以外からのCGI呼び出しは禁止されています。
 →iswebライトの管理画面に表示されているURLをクリックして呼び出しています。
(2)ファイル、ディレクトリのパーミッションが不適切です。
 →ソシム社のレッスンブックの通り、パーミッションを755にしています。
(3)CGIはcgi-binディレクトリに設置して下さい。
 →FFFTP上でcgi-binフォルダを新規作成してtext03.cgiを中に入れました。

iswebのサーバーの仕様は下記の通りです。

どうしてもわからないので、解決方法を教えていただきたく、よろしくお願い致します。

●サーバーの仕様に関する情報

インデクスの検索順index.html, index.htm, index.shtml
perlのパス/usr/local/bin/perl
shのパス/usr/bin/sh
UNIXコマンド使用不可
sendmail/usr/lib/sendmail
※iswebベーシック(クレジットカードで登録された場合)のみ使用可
cgi実行ディレクトリ名cgi-bin
cgi対応拡張子cgi
ssi対応拡張子shtml
FTP接続対応
TELNET接続不可
FrontPage Server Extention未対応(FTP接続をご利用ください)

※ cgiをご利用になる場合は、cgi-bin というディレクトリを領域内に新規作成してください。

CGIに関して以下のような制限を設けています。
状況結果
infoseek.co.jpに作成したあなたのホームページからCGIを呼び出した場合正常に表示されます
URLを直接入力した場合正常に表示されます
infoseek.co.jp以外のホームページからCGIを呼び出した場合403 Forbidden(アクセス権限がありません)
※iswebベーシックの場合は正常に表示されます
ブックマークを利用した場合古いブラウザでは403 Forbiddenと出る場合があります
※SSI(.shtml) を利用したコンテンツには広告表示タグは自動挿入されなくなります。
バナーが表示されない場合は以下のタグを使って手動でバナーを表示させてください。

はじめまして。

只今、ソシム社の【JavaScript&CGIレッスンブック】でCGIの勉強中です。

iswebライト(infoseek楽天の無料レンタルサーバー)のサーバーにCGIを設置するため、下記のCGIスクリプトをtext03.cgiというファイル名でFFFTPにてアップロードしました(アップロードしたのはtext03.cgiのみでindex.htmlはアップロードしていません )。

#!/usr/local/bin/perl

print"Content-type:text/html\n\n";

$now=localtime(time);

print"$now";

しかし、【呼び出されたURLの表示は拒...続きを読む

Aベストアンサー

画像を見る限りでの回答。

cgi-binディレクトリを作成し、中にアップロードしたとのことですが、
画像のアドレスバーにcgi-binの文字が見当たりません。(見間違いならご容赦を。)
ルートディレクトリに残っているものにアクセスしてしまっているのでしょうかね?

/cgi-bin/text03.cgi
のようにアップしてある場合のアドレスは
(略).co.jp/cgi-bin/text03.cgi

ディレクトリは普段お使いのOSにもフォルダという概念でありますので、そのイメージで。


人気Q&Aランキング

おすすめ情報