Namazu on Cygwin
Namazu 2.0.16 を Cygwin + Apache 2.0.55 で動かそうとしました。そしたら、Apache から呼び出す namazu.cgi がとてつもなく遅いことに気づきました。試しに簡単な CGI を書いて調べてみたら、それは非常に高速に応答するのです。CGI に渡される環境変数に関連するのではないかと思い、CGI に渡される環境変数を全て抜き出しました。
#include <stdio.h> int main() { printf("Content-type: text/html\n\n"); printf("Hello, world!\n"); fflush(stdout); system("sh -c printenv"); }
この環境変数を全て定義した後に namazu.cgi を起動するスクリプト(下記)を書いて試したところ、やはり動作が非常に遅いことが分かりました。
#!/usr/bin/bash export TERM='cygwin' export WINDIR='C:\WINDOWS' export HTTP_KEEP_ALIVE='300' export HTTP_USER_AGENT='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1' # And other environment variables here... ./namazu.cgi
環境変数を一つずつ潰していったところ、HOME 環境変数が適切(?)に設定されていないと遅くなるようです。デフォルトでは / になっているのですが、これを適当に設定したら動作は非常に高速になりました。
ちなみに、Apache 2.0.x で環境変数を CGI に渡すには SetEnv ディレクティブが使えます。