windows XP Pro 上で、Apache1.3.3 を動かしております。

そのサーバ上で、Perl(5.8.4)のcgiを動かしているのですが、サーバの負荷が高まる場合に限り(同時実行しているプロセス数が40以上程度になると)、CPUなどのリソースには余裕があるにもかかわらず、Premature end of script headers: というエラーをApacheが吐いて、Internal Server Error になってしまいます。
ちなみに、そのcgiからはODBC経由でMySQLに接続しています。
その原因・解決法がわかりました教えてください。
※ Apacheの設定では、子プロセス数を特に制限していません。
※ MySQL側の接続数も100に設定しているため、余裕があります。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/05/08 16:47:19
  • 終了:--

回答(2件)

id:TOT3 No.1

ほねほね回答回数12ベストアンサー獲得回数02005/05/08 18:09:58

ポイント25pt

[Premature end of script headers]というエラーはApache側からするとCGIが何らかの原因でエラーになった場合に発生します。基本はCGIをApache経由ではなく単体で実行しデバッグすることが早道のようです。

とは、いっても上記のような現象の場合は単体での発生を捕らえることは難しそうなので、httpd.confにScriptLog ディレクティブとScriptLogBufferの設定を行うことによってCGIがエラーになった場合にそのCGIへのリクエストとレスポンスをログに出力することができるので、設定後にエラーを発生させてエラーが発生するリクエストをCGIに対して単体で実行して原因を追求した方が良いと思います。

id:yasuo

回答ありがとうございます。

実は、単体では(というか40プロセス程度までは並行して)正常に動いております。したがって、単純なCGIの文法エラーではないと思われます。

、あた、ScriptLogはすでに取得しているのですが、見たところCGIから何も出力されずに終了してしまっているようです。

2005/05/08 19:30:59
id:chatoraneko No.2

chatoraneko回答回数221ベストアンサー獲得回数02005/05/09 19:12:11

ポイント25pt

CPUリソースには余裕があるとのことですが

メモリ、DISKIO等はどうでしょうか。


あとMySQLとApacheの設定で実メモリ以上になる設定をしていると

設定の接続数へ達する前に反応がなくなるケースがあります。


Premature end of script headers:

というエラーは直接の原因をあらわしているように見えません。

おそらく最終的に表示ができなくなり

現象的なエラー内容にと考えられます。

id:yasuo

> Premature end of script headers:

というエラーは直接の原因をあらわしているよう> に見えません。

は、まさにそうかとおもいます。

メモリもDISKIOも余裕があり、

また、MySQLとApacheの設定も、実メモリ以上になるような設定ではありません。

同時実行しているプロセス数が増えると、単純にContent-typeとテキストを出力するスクリプトさえ動かなくなってしまうため、MySQLでひっかかっているようではなさそうです。

WINSOCK の制限にひっかかっているということはありえますでしょうか?

2005/05/15 12:42:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません