- - PR -
C#でwindowsサービスへのイメージデータ渡し
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-04 17:33
いつもお世話になっております。
windowsサービスにイメージデータをbyteの 二次元配列値渡しで渡しています。 何件かまではうまく結果が返ってきたのですが、 何百件というデータになるといつまで経っても応答が無く、 Exceptionエラーすら返ってきません。 この現象の回避方法等ご存知の方いらっしゃいましたら ご教授頂けないでしょうか? [ メッセージ編集済み 編集者: まろ茶 編集日時 2005-07-04 17:51 ] | ||||||||
|
投稿日時: 2005-07-04 18:18
回避方法はわからないですが、原因追求が先かと。。
とりあえず、どこまで処理されているのか見るために、 サービス側でイベントログに書き込んでみては? あと、もう少し情報が必要かと。 ・サービス側でイメージをどう処理しているのか。 ・サービスはローカル/リモート? ・具体的なデータ量と、応答速度。(正常な場合と、NGになる境界) ・正常な結果は、どうやって判断しているのか。 ・サービスの動いているときの、マシンのCPU状態。 ・途中でサービスと停止したら、どうなったか。 このへんの情報は出せそうですよ〜。 思いつきですけど、こんなのも原因になるかもです。 ・マーシャル化に時間が取られている。 ・サービス側でスレッドを作りすぎ。 // 思いついたものを編集追加(編集多すぎ・・) [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-07-04 18:30 ] | ||||||||
|
投稿日時: 2005-07-04 18:42
返信ありがとうございます。
情報不足で申し訳ありませんでした。 イベントログへの書き込みですが、どうもサービスの中の処理まで 到達していないようなのです。 というのも ・イベントログを書き込む処理を組み込んでいるにも関わらず、 ログが書かれていない。 ・デバックプロセスを使用し、ブレイクポイントを張って実行しても 最初に走るはずのメソッドでつかまえられない。 ある件数までは問題ないのですが、 何百件となると上記のようなことが起こります。 ・サービス側でイメージをどう処理しているのか。 イメージに対して暗号化を書け、ファイルで保存。 ・サービスはローカル/リモート? リモートです。 ・具体的なデータ量と、応答速度。(正常な場合と、NGになる境界) 1078KB × 500件でテストを行っています。 応答はいつまで経っても返ってこないか、OutOfMemoryになります。 ・正常な結果は、どうやって判断しているのか。 ファイルに書き込むまでの処理を終えると戻り値trueを返しています。 やはり単純にメモリが足りないと言うことなのでしょうか? | ||||||||
|
投稿日時: 2005-07-05 10:00
サービスの呼び出しが、開始されてなさそうですね。
えっと・・約500MB分のデータを一度に渡そうとされているのでしょうか。 もしそうなら、クライアント側のCPUとメモリ、回線も大変そうです。。 サービス/クライアントのどちらでOutOfMemoryが発生したのかわかりませんが、 いずれにせよ、メモリ割当てに失敗してますね。(メモリ使いすぎ) 1件ずつ処理すれば良さそうですけど? | ||||||||
|
投稿日時: 2005-07-05 13:11
OutOfMemoryはクライアント側で発生しています。
確かに一件ずつの処理であればこの現象は起きないのですが、 システムの仕組み上、どうしても一件ずつの処理で対応ということが出来ないのです。 対策として、処理件数に何件までと言う制限を付けようと思うのですが、 その時のメモリ状態によりNGになる境界も変わるようですので、 対策にも困っています。 APIにメモリ使用状況を取得できるものがあるようなので これを使用して何とか対処しようと思います。 [ メッセージ編集済み 編集者: まろ茶 編集日時 2005-07-05 13:13 ] |
1