nDiki : SpeedyCGI
SpeedyCGI
root権限、Apache 管理者権限がなくてもインストールが可能な、Perl スクリプト常駐プログラム。 Perl CGI プログラムの高速化に利用できるが、CGI プログラムに限らず通常のスクリプトの高速化にも使うことができる。
nDiki (DiKicker) も SpeedyCGI を使用している。
WikiEngine での利用
関連情報
- Perl CGI プログラムの高速化
- CGI
- CGI プログラム
- FastCGI
スポンサード リンク
Related term
2003年10月19日 (日)
■ [ WiKicker ] SpeedyCGI 対応

苦戦。 メモ。
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- SpeedyCGI 以下で WiKicker がうまく動かない? (2006-12-04)
- WiKicker 0.28 リリース - バグ修正版 (2005-10-06)
- www.naney.org サーバ断続的にダウン (2006-04-30)
2003年11月9日 (日)
■ [ WiKicker ] SpeedyCGI 対応するも……

WiKicker の高速化のために SpeedyCGI 対応作業。
等を行う。 手元では動くようになった。
で今度は www.naney.org 上でテストしてみたのだが、無念 SpeedyCGI 自体がうまく動かない (FreeBSD 4.4-RELEASE + perl 5.005_03)。 CGI で呼び出すと
failed to open log file fopen: Permission denied
とエラー。make test でもこけているテストがあったし(t/sh_bang、t/timeout)このサーバじゃ動かんのかな?
@ と思ったら動いた
CGI スクリプトの先頭に
#!/home/.../bin/speedy -w -- -M30 -t300 -r30 -p/home/.../bin/speedy_backend
のように記述していたのだが path部分が長かったため sh-bang の限界を越えてしまっていたようだ。-p オプションで指定している speedy_backend のパスの方はデフォルトが Makefile.PL 実行時に適切に設定されているはずだから、実際には省略可。
ということで、
#!/home/.../bin/speedy -w -- -M30 -t300 -r30
としてみたら動いた。 よっしゃ。 これでリクエスト毎のプログラムのローディングの必要がなくなるので、レスポンスの遅さが改善されるはず。 パラメータは
- -M30 (MaxBackends: これ以上だとサーバによろしくない?)
- -t300 (Timeout: デフォルトの 3600=1時間だと長いかな。不要なプロセスは早めに止めておきたい)
- -r30 (MaxRuns: まだバグ・メモリリーク等があるかもしれないので30回呼ばれたらバックエンドを re-exec するように)
としておく。様子をみて微調整。 これからは、WiKicker を更新したら Wiki CGI スクリプトを touch する事を忘れないようにしなくては(SpeedyCGI にバックエンドを再起動させなおさせるため)。
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
- [ Perl ] Memcached を使ってみる (2004-01-12)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- [ WiKicker ] キャッシュまわりにバグ (2004-06-05)
2003年11月10日 (月)
■ [ WiKicker ] SpeedyCGI 化の様子

今のところ問題なく動いている様子。 レスポンスも良くなった感じ。 通常時で4つ程度、繁忙時で25程度 CGI プログラムが speedy_backend で常駐しているようだ。
- www.naney.org サーバ断続的にダウン (2006-04-30)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- SpeedyCGI 以下で WiKicker がうまく動かない? (2006-12-04)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
2003年11月27日 (木)
■ SpeedyCGI と環境変数

アクセスログ用 SSI が使用しているモジュールで REQUEST_URI、 HTTP_REFERER、 HTTP_USER_AGENT 環境変数がうまく取れていなない事があるのを発見。
ログをみると取れている時と、取れていない時がある。 何だろう。 でよくよく調べてみたら、SSI では問題なくて同じモジュールを Wiki で使っている時に失敗している模様。
よくわからないが、SpeedyCGI 関連の問題かもと思い main スクリプト上での呼び出し位置を修正したら直った。 呼び出し順に依存するのかなぁ。
あっ、そういえばモジュールのバグ混入(同環境変数を取得後のエスケープ処理で誤って空にしてしまうバグ)とその修正を今し方したのだが、SpeedyCGI がそのバグのある時点のモジュールをロードして動き続けていただけかも。 で、main スクリプトを修正したら SpeedyCGI がそれを検知して Wiki を re-execute したため今度は修正後のモジュールがロードされたため正しい挙動になったと(main スクリプトの修正内容は関係なく、touch された事自体が問題を解決した)。
多分。
- Tor で hidden service (2005-02-13)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- 本サイトの Referer 統計復活 (2000-11-05)
- WiKicker 0.27 リリース (2005-10-05)
- [ WiKicker ] 複数のキーワード集合による、AutomaticLink (2004-02-07)
2003年12月16日 (火)
■ [ www.naney.org ] CGI プログラムによるサーバ過負荷

ホスティングサービス会社からメール。 12月16日0:00-0:20にかけて、naney.org に設置しているCGI プログラムが原因でサーバが過負荷になり動作不安定な状態になったため、実行権限を落としたとのこと。
あちゃ。
メールでは naney.org に設定している hns のうち一方(この日記でない方)が原因との報告だったが、アクセスログをみるとそちへの最終アクセスは 12/15 18:25:19 でどうも違う感じ。 逆にこちらの hns の方に、61.116.156.147 から 23:42:32 - 00:17:37 の間に少なくとも523回のアクセスがあり、どうやらこちらが過負荷の原因になってしまったようだ。
ここ最近1日に1度から数度、普通のISP経由で連続アクセスがある。 UAはIEをなのっているが、ロボットのようでもある。 なかなか弾きにくい相手である。
できれば連続アクセスだけ拒否するようにしたいのだが、そう簡単でもない。
hns は SpeedyCGI では動くようなコードでもなさそうだし。
とりあえず index.cgi を書き換えて サーバの load average が高くなっている状態では 503 Unavailable を即座に返すように修正。
BEGIN {
my $average = `uptime`;
$average =~ /(\d+(?:\.\d+)?),?\s+(\d+(?:\.\d+)?),?\s+(\d+(?:\.\d+)?)/;
if ($1 > 50) {
print "Status: 503 Unavailable\r\n\r\n";
print "Server is busy, please retry later.";
exit 0;
}
}
を追加。load average が 50 (値は調整)を越えたら 503 になるようにしておいた。
ということで、この日記が 503 だったらきっとサーバがイッパイイッパイということです。
- [ 日記 ] SpeedyCGI による、同時処理数制御 (2004-01-20)
- [ www.naney.org ] 23:00 明日に移転先サーバの設定完了予定 (2002-01-22)
- サーバの負荷が高くなったら DiKicker が 503 を返して沈静化を... (2007-04-05)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- mixiに登録 (2004-11-19)
2003年12月31日 (水)
■ 私的10大ニュース2003

今年の大事件、マイブームなど。
@ [web] WiKicker 公開
オリジナル WikiEngine 「WiKicker」を公開し、 www.naney.org での運用を開始。 機能追加、負荷軽減など定期的にメンテナンスを継続中。 今年も1年 Wiki の年だった。
12月からは WiKicker ベースの日記システム「DiKicker」の開発も開始。
@ [comp] cool programs
- bogofilter ... spam メールが苦にならなくなった & 楽しくなった。
- SpeedyCGI ... WiKicker の高速化にかなり効果
- Unison ... 双方向同期では rsync より便利。
@ [net] ADSLトラブル
春の数ヶ月間悩まされ続けた。 一度常時接続に慣れてしまうと、もう戻れない。 結局モデムの故障。 その間「@FreeD」も契約してみたが、ADSL復旧に合わせて解約。
@ [comp] 適応型ソフトウェア開発
仕事でのソフトウェアプロジェクトでの適用を開始しはじめてみた。
@ [comp] ThinkPad X31 2672-PHJ
3年ぶりのメインノート PC の買い換え。 Pentium M 1.6GHz + 1GBメモリ。 また3年は頑張ってもらわないと。
@ [camera] TC-1、GR1s修理
愛用のTC-1が故障したため修理。 修理費16,300円也。
新規に購入したのは、Ai Nikkor 45mm F2.8P(10月12日)、 F3接眼補助レンズ 、 ドンケ F-2 ぐらい。 あまり散財しなかった。
今年は撮影枚数が伸びず。
近所のミニラボが閉店したのも痛い。
@ [misc] レザークラフト
昨年買ったままだったレザークラフトセットを使ってレザークラフトを始めた。 パスケース、LEDフラッシュライトケース x 2、ツールナイフケース x 2、露出計ケース などを製作。 最近は何も作ってないな。 また何か作りたい。
@ [misc] LEDフラッシュライト
LEDフラッシュライトに興味を持つ。 SureFire E1e + KL1 、 ARC-AAA 、 Arc LSL-P などを購入。
- [ WiKicker ] 日記機能開発開始 (2003-12-27)
- 私的10大ニュース2004 [ web ] (2004-12-31)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- 私的10大ニュース2005 [ comp ] (2005-12-31)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
2004年1月3日 (土)
■ 設定処理まわりの改良

一度読み込んだ Properties ファイルを pool しておき、再読み込み時に変更されていなければ再利用するように修正。SpeedyCGI を使っている場合に有効...のはずだがあまり速度的には変わってないかも。
- 過去の今ごろ (2004-06-30)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- SpeedyCGI 外す (2004-01-22)
- サーバの負荷が高くなったら DiKicker が 503 を返して沈静化を... (2007-04-05)
- www.naney.org サーバ断続的にダウン (2006-04-30)
2004年1月19日 (月)
■ [ WiKicker ] ピーク時の様子

先日実装したRecentLogページで、ピーク時*1のアクセスについてチェックしてみた。 特定のページだけに集中している訳ではなくて、その時間においても思ったより他のページにもアクセスがあるな。 1分あたりのリクエスト処理数は最大で約38(直前300リクエスト処理時間での平均)ぐらいだった。 同時アクセス数が増えると1リクエストにかかる処理時間も増えるし、これぐらいが今のサーバ/コードでは限界ということかな(SpeedyCGI で MaxBackends を 30 に設定しているため、これ以上は同時に処理しない)。
- www.naney.org サーバ断続的にダウン (2006-04-30)
- SpeedyCGI 以下で WiKicker がうまく動かない? (2006-12-04)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- [ WiKicker ] SpeedyCGI 化の様子 (2003-11-10)
- 自動リンク機能改善による悪影響 (2007-03-07)
2004年1月20日 (火)
■ [ 日記 ] SpeedyCGI による、同時処理数制御

SpeedyCGI はもともとPerlスクリプト起動時の遅さ(インタプリタ起動 + プログラムのコンパイル)を回避するために、一度起動させたPerlプログラムを使いまわすもの。 Apache管理権限のない一般ユーザでもインストールして利用できるしプログラムに問題があった時の対応も簡単なので、重宝している。
もちろん mod_perl でのコーディングと同様、グローバル変数の扱いなど気をつけなければならない点はある。 hns も残念ながらそれらを意識しては書かれていないのでSpeedyCGI下では、うまく動かない。
このSpeedyCGIだが同時に生成できるバックエンドプロセスの数(-M オプション)と、各バックエンドプロセス(使いまわされるPerlプログラム)の実行回数(-r オプション)を指定できる。 例えば -M15 ならバックエンドの数を最大15になる。 16個目のアクセスがあるとバックエンドのどれかが空くまで待たされる事になる。 また -r の方は実行しているうちにどんどんメモリ使用量が増えてしまうような行儀の悪いプログラムの時などに使用するもので、例えば -r30 としておくとそのバックエンドは30回呼び出されると終了させられる(そして新しいバックエンドがまた作られる)。
で話は長くなったが例えば '-M15 -r1 -t1' というオプションにすれば、何度も実行できないようなコードのCGI プログラムでも、同時処理数制御用として SpeedyCGI が使えるというわけ(-t はバックエンドのタイムアウト指定)。
この日記もロボットの絨毯爆撃などがあるとサーバに高負荷をかけてしまう事があるので、SpeedyCGI で同時処理数を抑えるようにしてみた。 さて効果はあるかな?
- [ WiKicker ] SpeedyCGI (2003-10-17)
- mixipress でコミュニティ掲示板もチェック (2005-10-01)
- CGI プログラム、Out of memory! に泣く (2001-01-04)
- [ www.naney.org ] サーバ重い (2004-01-20)
- www.naney.org サーバ断続的にダウン (2006-04-30)
2004年1月21日 (水)
■ [ Perl ] Devel::Size

WiKicker のメモリ使用量が多くなってきた(10MBを越えることも)。 高速化を第一にそこら中で計算結果をキープするようになっているのだが、その辺整理しる必要があるな。
SpeedyCGIを使って複数回のアクセスで使用され続けるため、メモリリークが起きていないかも要確認。
- www.naney.org サーバ断続的にダウン (2006-04-30)
- [ Perl ] Devel::Cycle (2004-01-23)
- [ WiKicker ] eval "use ..." (2004-01-23)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- [ 日記 ] SpeedyCGI による、同時処理数制御 (2004-01-20)
スポンサード リンク
Related web page
いや直して RT に投げたのはだいぶ昔なんですが,以前の日記で でも CGI::<strong>SpeedyCGI</strong> は Perl 5.8.6 以降ではメモリリークする(RT#13521)罠。がーん。 daily dayflower - mod_<strong>speedycgi</strong>2 on Apache 2.2 と書いてほおりっぱなしだったんでネガティブイメージが定着するとまずいかなと思い,一応アピール。上記のRT#13521にパッチを投げてあります。その他いろいろ RT に投げてるんで,手前みそながら CGI:http://d.hatena.ne.jp/dayflower/20070216/1171620558
以前作ったモジュール(daily dayflower - <strong>SpeedyCGI</strong> と module reload)でたまにモジュールファイルの変更を検知できないことがあったんですが,理由がわかりました。 <strong>SpeedyCGI</strong> の挙動をおさらいすると, frontend が backend を探す。いればよし backend がいない場合 backend(0) を生成 backend(0) がスクリプトをコンパイル backend(0) が fork して backend(1) を生成 frontend が backend(1) と通信 backend(1) が実行フhttp://d.hatena.ne.jp/dayflower/20061227/1167212645
<strong>SpeedyCGI</strong> を使ってみようと思って cpan install CGI::<strong>SpeedyCGI</strong> したら,怒られました。のであれこれ調べてなんとか動くパッチを作ってみました。 原因は Apache 2.2 (APR-1.2) になって, APR_BRIGADE_FOREACH() というマクロが deprecated になった(参考) apr_filename_of_pathname という関数が apr_filepath_name_get になった(CHANGES-APR-1.2) という非互換性があるためでした。 でも CGI::<strong>SpeedyCGI</strong> は Perl 5.8.6 以降でhttp://d.hatena.ne.jp/dayflower/20061205/1165309213
■よく検索されるキーワード
perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 0.254763s / load averages: 0.38, 0.24, 0.26
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク