HikiFarm 内の特定の Hiki 宛のリクエストが失敗するので調べてみました。
[error] [client x.x.x.x] FastCGI: comm with (dynamic) server "/home/wiki/html/font/index.cgi" aborted: (first read) idle timeout (30 sec) [error] [client x.x.x.x] FastCGI: incomplete headers (0 bytes) received from server "/home/wiki/html/font/index.cgi"
で、このとき FastCGI による ruby プロセスは 50 個上がっていました。どうやら、FastCGIConf の
-maxProcesses n (50) The maximum total number of dynamic FastCGI application instances allowed to run at any one time. It must be >= to -maxClassProcesses (this is not programmatically enforced).
に達していたようです。
現在、fdiary.net wikifarm では 61 個の Hiki が動いているので、最大 50 だと足りなかったのでしょう。ただ、同じ Hiki の ruby プロセスが複数動いていることもあるから、61 に上げればいいというわけじゃないだろうし、かと言ってあまり maxProcesses を増やすとメモリを使いすぎるだろうし、どうするのがよいのだろう?
-processSlack n (5) If the sum of the number of all currently running dynamic FastCGI applications and processSlack exceeds maxProcesses, the process manager invokes the killing policy. This is to improve performance at higher loads by killing some of the most inactive application instances before reaching maxProcesses.
を大きくするとか? とりあえず 20 にして様子を見てみます。
[追記] やっぱりだめでしたので、
-maxClassProcesses n (10) The maximum number of dynamic FastCGI application instances allowed to run for any one FastCGI application. It must be <= to -maxProcesses (this is not programmatically enforced).
を 1 に設定しました。これで、一つの Hiki あたり一つの ruby プロセスしか動かない、ということになるかな。というわけで、現在の設定は以下のとおり。
FastCGIConfig -maxProcesses 100 -maxClassProcesses 1
しまった.出遅れた!
おめ〜〜.