- - PR -
Sleepについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-04-07 21:21
VB.NETでWEBフォームを作成しています。
WINDOWS 2000 Server IIS 5.0 SQL SERVER 2000 メールを送信する機能を作成しています。 メールサーバの性能上、 1秒間隔でメールサーバに送信し、 50件送信すると5分の待ち状態にしています。 コードは、以下のように記述しています。 For i = 1 to 500 : : System.Threading.Thread.Sleep(300000) Next 5分の待ち状態に入ってから2、3分くらい?に ページが表示できません。 HTTP 500 - 内部サーバー エラー エラーが発生します。 IISの設定をいろいろ変えてはみたのですが(ASPのスクリプトタイムアウト等)、 解決できません。 解決策をご存知の方、ご教授お願いします。 [ メッセージ編集済み 編集者: pika 編集日時 2003-04-07 21:22 ] | ||||
|
投稿日時: 2003-04-08 10:40
こんにちは。
あの、500件のメールを送るということは、1sec * 500件 + (500件 / 50件) * 300sec = 3500sec→約1時間 ということですか?私の思い違いの可能性も大きいですが、ASPのワーカプロセスって、シングルで動いているように思います(デバッグ中に他の人から、「止めてます?」聞かれた)。 スレッドを分けるか、別プロセスをたてて、応答はさっさと返してしまい、エラーが発生したときは管理者のメールアドレスにエラーメッセージをメール送信するというようなことはできないのでしょうか。 | ||||
|
投稿日時: 2003-04-08 11:42
エラーが出るとメールの送信も止まるんですか?
クライアント側で、サーバからの応答がないからタイムアウトしてるだけのような気がしますが・・・ | ||||
|
投稿日時: 2003-04-08 17:40
はじめまして。
エラーの現象についてですが、 コントロールパネルからイベントビューアを起動し、 アプリケーションログにエラーが出力されていないか 確認してみてください。 以下のエラー内容が出力されているようであれば、 machine.config の <processModel>要素 内にある responseDeadlockInterval で設定された値のため である可能性が大です。(規定値は3分) エラー内容:「デッドロック状態である可能性があるため、 aspnet_wp.exe (PID: xxxx) が繰り返されました。」 | ||||
|
投稿日時: 2003-04-08 20:30
Jittaさん、ともさん、Qooさん
貴重なお時間を割いてご返答いただきましてありがとうございました。 それで質問していたコード内容に大誤りがありました。 大変申し訳ありませんでした。 (誤) For i = 1 to 500 : : System.Threading.Thread.Sleep(300000) Next (正) ' 送信カウント SecdCnt += 1 '50通毎に5分待つ If i = 50 Then System.Threading.Thread.Sleep(300000) i = 1 Else i += 1 End If それでみなさんのご解答を元に調査したところ、 Qooさんにご教授いただいた内容がドンピシャでした。 早速、mashine.configを修正して試したところ、 全員分送信することができました。 皆さん、本当にありがとうございました。 今回、VB.NETは初めて経験したので、 まだまだわからない事がまだまだあると思いますが、 今後ともご教授いただきますよう、 よろしくお願い致します。 | ||||
1
