いとさん、
確かにひとつ前の CGIまたはSSI が問題ですね。それ以降のCGI/SSIでスレッドNo.が同じものは Can't create file ... が出ることになります。
外部コマンド呼び出しを含むCGIまたはSSIがあると、特にISAPI(PerlIS.dllなど)使用の時には cmd.exe が残るというのが今のところの推測です。
山田さん、相宮さん、中田さん
当方のサーバの errors.logを過去に遡って調べたところ、
Can't create file for stdout in spawnProcess.
が続く現象は 1年以上も前のことですが、唯一度だけ起きていました。
原因は恐らく違うでしょうが、何かヒントがあるかもしれないので
そのときの状況を推測を交えて書いてみます。
サーバの設定で、exe の「一般パスでも実行する」にチェックし、
「単一スレッド」にもチェックをしていた。そのためダウンロード
させるつもりの exeファイルにアクセスがあったときにサーバ上で
自己解凍が始まり、入力待ちで放置状態になった。
アクセスした人は応答がないのでブラウザから「中止」したか、
他のページにアクセスし直したが、解凍のプロセスはサーバ上に
残ったままになり、その後 SSIやCGIにアクセスがある度に
上記のメッセージが出続けていた。
「Client Abort」はアクセスを中止(あるいは移動)した時に出ます。
「Can't create file …」が続くのは SSIにアクセスがあったから
(CGIでは「Error Response 500 …」も出る)ですが、問題なのは
その SSI/CGIではなく、その前に Abort になった方だと思います。
サーバ上で該当するプロセスを調べて殺さないと AN HTTPDを
再起動させても「サーバソケットを使用出来ません。
他のサーバが動いていないか確認してください」となり
起動に失敗します。結局よく分からないと Windowsを
再起動するという対応をせざるを得なくなると思います。
上記のケースであれば、一応以下の解決策が考えられます。
1. 「一般パスでも実行する」のチェックを外し、
ダウンロードさせる exeファイルは必ず一般パスに置く
2. exeの CGIを使わないなら exeの「実行する」のチェックを
外すか CGIの exe行自体を削除する。
3.「単一スレッド」のチェックを外す
残ってしまうプロセスは exe とは限らないので、より一般的には
3. が最善の策かと思われます。
「単一スレッド」については以下のコメントで書いた問題もあり、
http://homepage1.nifty.com/yito/namazu/gbook/20040713.2054.html
チェックを外すのがいいのではというのが私の考えです。
もし「単一スレッド」にチェックはしていないということであれば
全く別の話と思われるので、チェックの有無をお知らせください。
山田さん、
もろもろの症状については、「Can't create file for stdout in spawnProcess」が出ていればそうなることは理解できます。
念のため、#exec cmd の記述内容も書いてください。「普通だ」ということだと思いますが、それが私には見えませんので。
それから、これも特に変わったことはしていないとおっしゃるのでしょうが、設定内容を確認したいので、regedit で HKEY_LOCAL_MACHINE\Software\AnHttpd 以下をファイルにして送ってください。
中田さん使っているのはただのランダムバナー表示CGIなんですが、
#!/usr/local/bin/perl
$datafile = "d:/www/scr/rank/pics.txt";
open(IN,"$datafile");
@pics = <IN>;
close(IN);
$pics=@pics;
srand;
$picnn=int rand($picn);
print "<IMG SRC=$pics[$picnn]>";
exit;
これをexec cmdで表示しています。
SSI処理中..となっている間にはANHTTPDも落ちて普通のhtmlも表示できなくなるように
なるようです。
この状態でANHTTPDを終了させようとするとSingleObject hWaitloop(?うろ覚えですいません)がANHTTPDのタイトルバーに表示され固まります。
タスクマネージャで終了させるしか出来なくなります。
あと気になったのがたまにプロセス終了待ち...から待機中に変わる間隔が一瞬から1秒くらいになり、空のcmd.exeがスタートバーに表示されたままになってそれ以降SSIやCGIが使えなくなることも分かりました。この時点ではshtmlは見れます
この状態で放置するとSSI処理中...→ANHTTPD死亡という流れを取るようです。
死亡というのはIEで見るとサーバに問題が発生しているとかのエラーが出ます。
発動する時間も決まってないのでいつ落ちるかヒヤヒヤしています。
プロセス終了待ちが少し長く表示されて空のcmd.exeが出るまではSSIやCGIは正常に動作します。
山田さん、
SSIの中身の問題と思われます。
SSIを記述しているHTMLファイルと、SSIの実行ファイルをメールで送ってください。
2つ下の山田です。
またAnhttpdがお亡くなりになりました。
SSIが出力されていなくなったので手動で再起動させようとしたら
サーバソケットを使用出来ません。他のサーバが動いていないか確認してください
というようなメッセージがでました。
タスクバーを見るとcmd.exeが2つ立ち上がっていました。
ウィンドウの内容は真っ黒で何も書かれていませんでした。
このcmd.exeを終了させたらAnhttpdが起動できるようになりました。
エラーログを載せておきます。
Thu Sep 09 04:41:35 2004 Warning: Connection closed and CGI process ID=532 still alive
Thu Sep 09 04:41:35 2004 Information: CGI process ID=532 finished
Thu Sep 09 04:41:35 2004 Client Abort detected during CGI/SSI process
Thu Sep 09 04:41:46 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:41:46 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:41:46 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:42:30 2004 Client Abort 1-- detected during CGI/SSI process
Thu Sep 09 04:42:31 2004 Warning: Connection closed and CGI process ID=744 still alive
Thu Sep 09 04:42:31 2004 Information: CGI process ID=744 finished
Thu Sep 09 04:42:31 2004 Client Abort detected during CGI/SSI process
Thu Sep 09 04:43:02 2004 Client Abort 1-- detected during CGI/SSI process
Thu Sep 09 04:43:03 2004 Warning: Connection closed and CGI process ID=716 still alive
Thu Sep 09 04:43:03 2004 Information: CGI process ID=716 finished
Thu Sep 09 04:43:03 2004 Client Abort detected during CGI/SSI process
Thu Sep 09 04:43:06 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:06 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:29 2004 Client Abort 1-- detected during CGI/SSI process
Thu Sep 09 04:43:30 2004 Warning: Connection closed and CGI process ID=336 still alive
Thu Sep 09 04:43:30 2004 Information: CGI process ID=336 finished
Thu Sep 09 04:43:30 2004 Client Abort detected during CGI/SSI process
Thu Sep 09 04:43:44 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:44 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:44 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:47 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:47 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:51 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:43:51 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:10 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:10 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:13 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:13 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:13 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:13 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:13 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:13 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:14 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:14 2004 Can't create file for stdout in spawnProcess.
Thu Sep 09 04:44:23 2004 AN HTTPD 1.42m Closed.
Thu Sep 09 04:44:24 2004 サーバソケットを使用できません。他の HTTPサーバが動いていないか確認してください。あるいはポート番号を変えて下さい。
Thu Sep 09 04:44:44 2004 AN HTTPD 1.42m Ready.
http://homepage1.nifty.com/yito/namazu/gbook/20030105.1536.html
↑1.42mでこれと同じ症状が頻発するのですが
errors.logには
Can't create file for stdout in spawnProcess.
がある時間からずらーと並んでいます
負荷が高くなると落ちてしまうのでしょうか?