私が作成しているブラウザゲームでは、SpeedyCGIを採用しています。
まず、「SpeedyCGI」とはどんなものかというと。
CGIプログラムを、普通より高速で動作させるPerlモジュールです。
SpeedyCGIは、他の高速化モジュール(fast cgi や mod perl)よりも、
簡単に導入ができます。
SpeedyCGIには、二つの大きな機能があります。
①CGIスクリプトを常駐させる
②予めスクリプトコンパイルした状態でキャッシュしておく
後述しますが、①の機能を利用するのは、やや大変です。
★SpeedyCGIのインストールの注意点
SpeedyCGIを導入するには、二つの方法があります。
①CAPNを利用する
②yumを利用する
オススメは、②のyumを利用する方法です。
私は、①のCPANで最初に導入を試みましたが、
なぜか、うまくインストールできませんでした。
②の詳しい導入方法は、「yum Speedy CGI」などでググってみてください。
SpeedyCGIが、ちゃんとインストールされたかは、以下のコマンドで確認できます。
コマンドを実行して何も表示されなければ、正しくインストールが完了しています。
perl -MCGI::SpeedyCGI -e ''
★SpeedyCGI運用の注意点
SpeedyCGIはインストールしてしまえば、実行は簡単です。
Perlで書かれたCGIスクリプトの最初の行を、以下のようにします。
#!/usr/bin/perl
↓
#!/usr/bin/speedy
基本的には、問題がなければ、これで動きます。
しかし、スクリプトに問題があると、動きません。
その場合、上記の変更箇所を以下のように変更します。
#!/usr/bin/speedy -w -- -r1
後ろにオプションが追加されましたが、
重要なのが “-r1” の部分です。
この意味は、SpeedyCGIの常駐機能を停止させています。
実は、常駐機能を利用するには、
プログラムが、SpeedyCGIに合わせたコードである必要があります。
そのため、初めからSpeedyCGIを想定したプログラムでない場合や、
やや、複雑なプログラムの場合は、常駐機能を停止した方が無難です。
その代わり、速度は遅くなりますが、
コンパイルしたプログラムをキャッシュしておく機能は働いています。
全く何も高速化していないプログラムよりは、やや早いです。
ただし、たまにしか呼ばれないプログラムの場合は、
SpeedyCGIの機能が発揮できないどころか、遅くなります。
それは、新たにSpeedyCGIのプロセスを立ち上げたり、
コンパイルしたプログラムを、キャッシュする作業を最初に行うためです。
ですので、ほとんど使わない上、継続して作業をしないプログラムは、
SpeedyCGIの力を発揮出来ない場合もあるので、注意が必要です。
ブログ主が運用するブラウザゲームでは、
常駐機能を無効にした状態で、SpeedyCGIを動かしています。