- PR -

CPU使用率

投稿者投稿内容
和也さん
ベテラン
会議室デビュー日: 2006/02/09
投稿数: 78
投稿日時: 2006-06-25 20:21
すいません
ちょっと分からないのでご質問させていただきました。。

VB.NETで帳票出力アプリを作成しているのですが、

ループで、DBより取得したデータを様々な帳票出力用文言を生成し、書き出しデータを
配列に格納しています。

おそらく上記部分で発生しているのだと思うのですが、
自端末では一切起こらなかったのですが、
使用しているユーザーさんは、20回に1回は、
フリーズしたり、起こるはずの無い、例外エラーが発生したりするとのことなんです
リモートで、使用状況を見てみると、帳票出力アプリを使用している間(CPU使用率100%)の状態で、
別のアプリをガンガン動かしていました。

CPU使用率を私のアプリが占有しているから、
フリーズしたり、誤動作したりするのでしょうか?

対策としては何があるのでしょうか?
System.Threading.Thread.Sleepを使用してCPU使用率を占有させないようにすれば
回避されるのでしょうか・・・

アドバイスよろしくお願いいたします




じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-25 21:26
毎々お世話になっております。

引用:

和也さんさんの書き込み (2006-06-25 20:21) より:

対策としては何があるのでしょうか?
System.Threading.Thread.Sleepを使用してCPU使用率を占有させないようにすれば回避されるのでしょうか・・・


やってみなければわかりませんが、多分そうでしょう。
問題はどこに入れるか、ですよね。

Document の Load 関係が原因のように思われますが、その帳票は、どのような帳票でしょうか?
System.Drawing.Printing.PrintDocument? CrystalReports? ActiveReports?
サブレポートが山のようにあるような帳票でしょうか?

それと、問題の端末のスペックもわからないです。
(洒落にならないくらい低スペックでない限りは大丈夫だと思いますけど)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
和也さん
ベテラン
会議室デビュー日: 2006/02/09
投稿数: 78
投稿日時: 2006-06-25 21:36
明日になれば分かることですが、、、

帳票は結構色々な制限があり、現在は、Excelに書き出す形式にしています

手順としては、
 1.必要なデータをSQLより抽出
 2.抽出データを元に出力データを生成
 3.生成したデータをExcelに書き出し
のように行っています

落ちれいると思われるのは、2の部分で
例外が発生しているメソッドもログを書き出しているので分かっているので、
その部分にsleepを入れてみようと思います

おそらくExcelに書き出し中にExcelの使用率も相当高くなっていると思います。
そのときの不具合は今のところ出てはないのですが、、、
.NETからExcelを操作してデータを書き出している時に、そのExcelのCPU使用率も
抑えるような技とかあるのでしょうか?


クライアント端末はペン4 3GHz メモリは、512ほどつんでいるので、問題は無いと思います
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-06-25 21:42
引用:

和也さんさんの書き込み (2006-06-25 20:21) より:
CPU使用率を私のアプリが占有しているから、
フリーズしたり、誤動作したりするのでしょうか?


推測ですが、もともとあるバグが、CPU使用率が高いことでたまたま出やすくなるだけでしょう。どんなアプリケーションも、CPU使用率がいくつであろうとも正しく動くべきです。
CPU使用率とバグの出やすさに相関があるのならば、CPU使用率を下げることに意義がまったくないとは言えませんが、しかし、それは根本的な解決ではありません。本来はバグをなくすべきです。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-25 21:46
引用:

和也さんさんの書き込み (2006-06-25 21:36) より:

手順としては、
 1.必要なデータをSQLより抽出
 2.抽出データを元に出力データを生成
 3.生成したデータをExcelに書き出し
のように行っています

落ちれいると思われるのは、2の部分で例外が発生しているメソッドもログを書き出しているので分かっているので、その部分にsleepを入れてみようと思います


普通に考えると、3 だと思ったのですが、そうじゃないのですね。
3 であれば、「HRESULT からの例外」 が発生する可能性はあるのですが。

引用:

おそらくExcelに書き出し中にExcelの使用率も相当高くなっていると思います。


あれ? 2 じゃなかったのでしょうか?
"Excel に書き出し中" にあたるのは 3 のような気がしますが...

引用:

クライアント端末はペン4 3GHz メモリは、512ほどつんでいるので、問題は無いと思います


やっぱり、「HRESULT からの例外」 のような気がするんですけどね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
和也さん
ベテラン
会議室デビュー日: 2006/02/09
投稿数: 78
投稿日時: 2006-06-25 21:47
バグですか・・・

1回目は端末がフリーズしても2回目は必ず成功し、、、
A端末で失敗しても、全く同じことをB端末で行うと成功するんですが

やはりバグがあるんでしょうか?
和也さん
ベテラン
会議室デビュー日: 2006/02/09
投稿数: 78
投稿日時: 2006-06-25 21:50
Excelの書き出し処理まで進むと必ず成功はしています。

例外の種類は、明日会社で確認してみます
今はちょっと分からないので・・・

.NETのアプリの使用率を下げても今度はExcelの使用率があがるだけかと思い・・
ちょっとそこはまだ確認していないのですが。。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-06-25 21:56
引用:

じゃんぬねっとさんの書き込み (2006-06-25 21:46) より:
あれ? 2 じゃなかったのでしょうか?
"Excel に書き出し中" にあたるのは 3 のような気がしますが...


いま問題が起こっているのは2だけど、3でも多分CPU使用率が高くなってると思う
ってことでしょう。

で、例外が分からんとなんともいえませんね。
て思ったら、現時点ではまだ分かってないってことですね…

スキルアップ/キャリアアップ(JOB@IT)