コマンドラインでの連続未送信メール登録No.17603
you0805 さん 04/04/12 19:07
 
あるメールを分割処理して、コマンドラインで鶴亀メールに
未送信メールの状態で登録したいと考えています。

テストとして、以下の3行を改行コードも含めコピーし、
コマンドプロンプトに貼り付けたときにメールが1つしか登録されない状態になります。
(貼り付けた瞬間に3つのコマンドを実行する形になります)
"C:\Program Files\TuruKame\turukame.exe" unsentmail Subject="1"
"C:\Program Files\TuruKame\turukame.exe" unsentmail Subject="2"
"C:\Program Files\TuruKame\turukame.exe" unsentmail Subject="3"

鶴亀メール本体が起動しているときは問題なく登録されるのですが、
起動していない場合は未送信フォルダに 2 番目か 3 番目のメールのみが登録されて
いる状態になります。
一個一個のコマンドを時間をおいて実行すると3つとも登録されているので、
二重起動などのタイミングの問題だとは思いますがなんとかならないでしょうか?
一つ一つ時間をおいて実行するしかないのでしょうか。

よろしくお願いします。

環境:WinXP Pro sp1 鶴亀メール 3.54

[ ]
RE:17603 コマンドラインでの連続未送信メNo.17610
秀まるお2 さん 04/04/12 19:49
 
 こちらでテストしたら簡単に再現できました。これは明らかにバグなので、な
んとか(苦労してでも)修正したいと思います。

 一応、コマンドライン付きのturukame.exe複数起動についてはちゃんと排他制
御などの処理をしてはいるつもりでしたが、実際は不完全ということのようです。

[ ]
RE:17610 コマンドラインでの連続未送信メNo.17611
you0805 さん 04/04/12 19:54
 
> こちらでテストしたら簡単に再現できました。これは明らかにバグなので、な
>んとか(苦労してでも)修正したいと思います。
よろしくお願いいたします。
とりあえずは時間をおいて処理することで回避できますので、
ぜんぜん急ぎではないです。

[ ]
RE:17611 コマンドラインでの連続未送信メNo.17620
秀まるお2 さん 04/04/12 22:43
 
 次の版(たぶん、V3.55β1)にて直ります。

[ ]
RE:17620 コマンドラインでの連続未送信メNo.17646
you0805 さん 04/04/13 16:34
 
すばやい対応ありがとうございます。
基本的には問題ないのですが、
まれにエラーがでるようです。

テストとして100行のコマンドラインを並列処理させてみましたが、
すべてうまくいくことがほとんどですが、
まれに以下のエラー(*1)がでたりWindowsのエラー画面
(エラーを送信するかどうかというダイアログ)
が表示されます。
また、一度だけdump.txtに出力されるエラーも発生しましたので、
niftyのアドレスの方に送らせていただきました。
これが100行のコマンドラインで、
処理に時間がかかるからという理由で
でているのでしたらかまわないのです。
実際はせいぜい5,6行のコマンドを実行するだけなので。

よろしくお願いいたします。

(*1)
「コマンドライン処理が並列動作しようとしてタイムアウトしました。コマンドライ
ン処理をキャンセルします。」

環境:WinXP Pro sp1 鶴亀メール 3.55b1

[ ]
RE:17646 コマンドラインでの連続未送信メNo.17649
秀まるお2 さん 04/04/13 17:10
 
 テスト不足のためにお手数かけてすみません。こちらで100行分のテストを
したら、同様の症状が再現しました。

 さっそく誠意調査させていただきまして、今度こそ正確に修正します。

[ ]
RE:17649 コマンドラインでの連続未送信メNo.17652
秀まるお2 さん 04/04/13 21:56
 
 一応直しまして、死んでしまうようなことは無いようにはなりました。

 しかし、「コマンドライン処理が並列動作しようとしてタイムアウトしまし
た」のようなエラーが出る可能性はあります。100個くらい起動した程度なら
大丈夫ですが、500個くらい連続起動するとエラーになります。

 タイムアウト時間を10秒から20秒に延長しましたが、あまり長い時間待ち
続けるのもなんなので、この程度までが仕様ということでお願いします。

 もうちょっとテストしてから、近日中に(たぶん明日)V3.55β2をアップロー
ドします。

[ ]
RE:17652 コマンドラインでの連続未送信メNo.17673
you0805 さん 04/04/14 14:14
 
> しかし、「コマンドライン処理が並列動作しようとしてタイムアウトしまし
>た」のようなエラーが出る可能性はあります。100個くらい起動した程度なら
>大丈夫ですが、500個くらい連続起動するとエラーになります。
3.55b2確認しました。
何度も申し訳ないですが、
1000個でテストするとまれに700個めあたりか1000個め近くで
アプリケーションエラー(Windowsが出すエラー)がでるのですが、
数が少ない場合(多くても10個程度)にこのエラーが出ることはないのでしょうか?
その保障があればこちらとしては問題はないので
ご確認よろしくお願いいたします。

[ ]
RE:17673 コマンドラインでの連続未送信メNo.17678
秀まるお2 さん 04/04/14 16:51
 
> 1000個でテストするとまれに700個めあたりか1000個め近くで
> アプリケーションエラー(Windowsが出すエラー)がでるのですが、
> 数が少ない場合(多くても10個程度)にこのエラーが出ることはないのでしょうか?

 僕のマシンはメモリが128Mしか無いせいで、200個程度起動した時点で既に
スワップしまくてっしまい、マシンが固まったようになります。なのでほとんど
テストになりません。

 別のマシン(といっても、メモリ256M)で今テストしてますが、今のところ、
アプリケーションエラーが出る前に「タイムアウトうんぬん」のエラーになって
しまいます。

 drwtsn32.exeを起動して出てくる内容を教えて頂けると、それで原因が分かる
かもしれません。よろしければメールで送ってください。送り先は、
maruo@mitene.or.jp です。

> その保障があればこちらとしては問題はないので
> ご確認よろしくお願いいたします。

 保障うんぬんとなると、難しい物があります。安定性重視ということならば、
プロセスを大量起動しないように運用することをお勧めします。

 例えば、コマンドプロンプトでの例で言うなら、バッチファイルの中から鶴亀
起動するようにすれば、1つのturukame.exeが終了してから次のturukame.exeが
起動されるような動作となります。または、startコマンドで/waitオプションを
指定する方法もあります。そういった形で、プロセスを1つづつ起動するのが一
番ベストだと思います。

 その場合、動作速度が多少遅くなるので、それについては、常駐鶴亀を使うこ
とで対処できます。

 まぁ、そうやったとしても、極端な話を言えばハードディスクがクラッシュし
たらおしまいだし、「保障」が出来る程かどうかはなんとも言えません。

[ ]
RE:17678 コマンドラインでの連続未送信メNo.17682
秀まるお2 さん 04/04/14 17:30
 
 アプリケーションエラーが再現しました。たしかに鶴亀メール内部で死んでま
した。

 それとは別に、「アプリケーションの起動に失敗しました。(0xc000142)」の
ようなエラーも出るようですが、これはWindowsが出してるようで、原因は分か
りませんでした。

 死んでしまう方だけ調べて直します。

[ ]
RE:17682 コマンドラインでの連続未送信メNo.17683
秀まるお2 さん 04/04/14 17:40
 
 一応、死なないようにだけ修正しますが、やはりこれもタイムアウトしてるの
が原因でして、タイムアウトしない状態であれば死なないはずだと思います。

 ということで、今のところは100個程度のturukame.exe起動なら大丈夫そう、
ということだけ言えます。「タイムアウトうんぬん」が出ないように運用してい
ただければ大丈夫だと思います。

 こちらで一晩マシンを動かしっぱなしでテストなどさせてみます。

[ ]
RE:17683 コマンドラインでの連続未送信メNo.17701
秀まるお2 さん 04/04/15 17:59
 
 かれこれ10時間以上、鶴亀メールのコマンドライン起動テストをしてますが、
正常動作しています。

 こちらでテストしているのは、こんなバッチファイルです。

-----------------------------------------------------
   :Loop
   start turukame.exe unsentmail subject="00"
   start turukame.exe unsentmail subject="01"
   …
   …
   start turukame.exe unsentmail subject="99"
   turukame.exe /wait
   delete c:\turukamedata\アカウント\未送信\*.txt
   goto Loop
-----------------------------------------------------

 /waitというのは、鶴亀メールのプロセスが全部終了するのを待つための、テ
スト用に追加したオプションです。次のV3.55β3でサポートします。

 上記のような、100個づつの起動なら大丈夫なようです。

---------------
 このようなテストをしていたら、未送信フォルダ中のメール数が1万通とかに
なった時に、鶴亀メールの起動が極端に重くなる症状を体感しまして、それにつ
いては別途対処を入れました。かなり改善はしましたが、メール用のファイル数
が多くなると遅くなるのは仕方がないようです。

[ ]
RE:17701 コマンドラインでの連続未送信メNo.17702
you0805 さん 04/04/15 19:44
 
お世話様です。

こちらでもテストしてみましたが、
鶴亀メールが死んでしまうことはなくなったようです(^-^)
ありがとうございました。

アプリケーションの初期化に失敗しました。(0xc000142)
というエラーがたまに出ますが、
追加していただいた /wait オプションを使えば、
メール数が多くなっても安全に運用できそうです。

テスト環境がだいぶ違うようでしたので、
一応こちらのPCのスペックを書いておきます。

環境:WinXP Pro sp1 鶴亀メール 3.55b3
PC  :CPU Pentium4 2.66GHz RAM 512MB

[ ]
RE:17702 コマンドラインでの連続未送信メNo.17704
秀まるお2 さん 04/04/15 21:39
 
 一応、本当に信頼性を必要とするのなら、例えばマシン上でのturukame.exeプ
ロセス数なり、CPU使用率なりを監視したり、あるいは別のマシンを使って定期
的にマシンが生きてるか監視するなんて作戦をするのも手だとは思います。うち
のhide.maruo.co.jpサーバーも、そのようにして監視していて、何かおかしなこ
とがあるとメールが届くなり、自動的に再起動するなどの仕掛けをしています。
もちろん、マシンが壊れた時のための代替マシンもあります。

 ホームページが改ざんされたかどうかも(index.htmlファイルのタイムスタン
プを定期的に監視するなどして)チェックしてて、もし改ざんされたら元に戻す
なんてこともやっています。全部自前のソフトで。

[ ]