CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。
また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし、Bサーバのpre.cgiからAサーバのmain.cgiへのアクセスを試み、Aサーバがダウンしている為にアクセスに失敗した場合に、Bサーバ内のerroor.htmやsub.cgiに飛ばすことなどはできるのでしょうか。
できれば、CGI(perl)で実現したいのですが、有効な方法がございましたら、恐れ入りますが、教えていただけないでしょうか。もしも可能でしたら、簡単なサンプルのスクリプト等を添えていただけると大変助かります。何卒よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>、FastCGIやmod_perlというのはどのようなものでしょうか。
Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/
WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。
>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか
ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラムに、定期的にBサーバに通知させようと考えたわけですが、サンプルのようなものはどこかにあるのかもしれませんけど、見つけるのは大変でしょう。
いずれにしても、BサーバのCGIでAサーバの状態を取得し、その後AサーバのCGIを呼び出すのだとすると、今度はBサーバの負荷が高くなります。
負荷を軽減したり、サーバダウンした場合の対処方法として色々講じようとするのも良いのですが、あまり色々考えすぎると、返って別の部分で負荷が高くなったり、広げすぎて収拾がつかなくなったりするものです。
個々のCGIの処理を軽くするようにするなど、CGI側の工夫で回避できる部分は多いので、そちらがまず先かと思います。(余分な処理をさせない、より速いアルゴリズムを選ぶ、2度の処理に分けられるなら2つのCGIに分け2ステップで処理するetc)
ありがとうございます。
大変残念なのですが、FastCGIやmod_perlにつきましては、私が利用させて頂いてるレンタルサーバでは使用できないかもしれません。将来、レンタルサーバを選ぶときの基準とさせていただこうと思っております。
ところで、より速いアルゴリズムを選ぶ、2ステップで処理するといったテクニックについて、記述しているURLなどはご存知でしょうか。もしもご存知でしたら教えていただけないでしょうか。
例えば、フォームから送信があった場合に専用ファイルでロックした後4つのファイルにデータを順番に書き込む、sendmailを利用するといったCGIを作っているのですが、かなり負荷がかかるものでしょうか。現在、ウィンドウズ環境で作成・試験し、その後レンタルサーバで動かしているのですが、負荷をどのように測ればよいか分かりません。もしも簡単に測る方法などございましたら、教えていただけると助かります。何卒よろしくお願いいたします。
No.1
- 回答日時:
>CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイト
これは、恐らくWWWサーバ(Apahce等)の設定で、プロセス数等を制限しているのだと思います。
↓ちょっとうまいのが見つからなかったのですが、参考までに。
http://www.apache.jp/jdocs/tune/
独自サーバを立てているか、レンタルサーバで設定可能な場合にしか使えないと思いますが。
それから、負荷が高くて困っているのならば、CGIのプロセス起動時のオーバーヘッドを解消するために、(Apacheなら)FastCGIやmod_perlを使用するのも手だと思います。
>例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし
やりようはあると思いますが、ちょっと思いつきません。
ただこれだと、CGIが実行されるたびにトラフィックが発生しますし、Bサーバがダウンしたときはどうするんだ、という問題もありますので、あまり得策ではないような気がしますが。
やるのであれば、Aサーバ側から定期的にサーバが生きてることをBサーバ側に知らせ、Bサーバ側ではそれを受け取って、ローカルのファイルなりなんなりに状態を記録、BサーバのCGIではそれを参照し、Aサーバの生き死に(一定時間更新されていなければ死んでるとか)を判断するようにするとか。。。
ご教授ありがとうございました。URLまでいただき、大変感謝しております。また、一度にいろいろと質問してしまい、お手間をとらせてしましたことをお詫び申し上げます。
>WWWサーバ(Apahce等)の設定で、プロセス数等を制限しているのだと思いま
す。
やはり、サーバで設定しているのですね。 残念ながら、当方、レンタルサーバのため、設定ができません。ちなみに、FastCGIやmod_perlというのはどのようなものでしょうか。勉強不足で申し訳ありませんが、教えていただけるとありがたいです。
>Aサーバ側から定期的にサーバが生きてることをBサーバ側に知らせ・・
大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか。もしも可能でしたら、当方初心者の為、教えていただけると大変助かります。
お手数をおかけしますが、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- サーバー ファイルサーバのデータのバックアップ 1 2023/03/15 10:30
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- 美術・アート トレパク疑惑をかけられにくくするには ここ最近いわゆるトレパク警察のいいがかりがが厳しくなったようで 1 2023/08/21 09:59
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- Windows 10 だいたいの能力はどのくらいでしょうか 3 2023/03/05 17:18
- サーバー Windows Server 2019 CALについて 3 2022/04/02 16:40
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーバーをプログラミング
-
VB2010 配布 SQLサーバ利用の...
-
php windowsでの開発環境
-
Image::Magickの呼び出し
-
hostsの設定について
-
c++のサーバー通信
-
CGIへのアクセスが集中した場合...
-
net::smtp port設定
-
EXCELファイルに誰がアクセスし...
-
特定のCGIだけ、作動するかわり...
-
URLに~/cgi-bin/~を隠す方法
-
CGIをHTML(scriptタグ)上でうま...
-
古ーくからフリーのtree.cgi掲...
-
つぼ八 上新庄店の場所。
-
問い合わせメールフォームの不具合
-
Mac OS X 10.5 LeopardのApache...
-
CGIって何ですか?簡潔に教えて...
-
Webフォルダでサーバーからイン...
-
patipati拍手 設置方法
-
ショッピング・システムに、HTM...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ASPからJavaScriptへの受け渡し...
-
VBAを使用して、外部サーバのフ...
-
LAN内に接続されているPCをリ...
-
perlやPHPについて、CGI方式と...
-
リダイレクト機能
-
「EJBとServletの違い」「J2SE...
-
HP-UX (IA64)にVNC等でリモート...
-
ソースを見せたくないです。
-
Image::Magickの呼び出し
-
PHPとPostgresとEclipseについて
-
アンケートフォームのデータを...
-
TwitterAPIを使用せずに自動ツ...
-
ローカルマシンでCGIソースが出...
-
mathtexの導入方法について。
-
CGIへのアクセスが集中した場合...
-
WEBサーバとDBサーバ
-
net::smtp port設定
-
リンク参照元について。
-
別サーバへのクライアント入力...
-
HTML文書の中で環境変数を使う...
おすすめ情報