【稼動環境】
OS:Windows Server 2003 R2 SP2
Microsoft Internet Information Services (IIS) 6.0 Crystal Reports for. Net framework 2.0バージョン:10.2.0
Microsoft.Net Framework バージョン:2.0.50727.42
ASP.NETバージョン:2.0.50727.42
【トラブルの現象】
ASP.NET の Web アプリケーションで Crystal Report を使用し PDF 出力しています。
Web アプリケーションの印刷ボタンを押してPDFのエクスポートを何回か繰り返すと、
ブラウザに「システム管理者が設定したレポート処理ジョブの最大値に達しました」と
いうメッセージが表示され、以降新規の印刷が一切できなくなりました。
(IISのアプリケーションプールのリサイクルを実施すると、復旧)
エラーが発生した同じタイミングでイベントログ(アプリケーションログ)に
以下のエラーも出力されています。
> イベントの種類: 警告
> イベント ソース: ASP.NET 2.0.50727.0
> イベント カテゴリ: Web Event
> イベント ID: 1309
> 説明:
> 場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,OpenReportMethod openMethod, Int16 parentJob)
> 場所 CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName,OpenReportMethod openMethod, Int16 parentJob)
> 場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport()
> 場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val,Type type)
> 場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)
> 場所 aspx_DeliveryNotice_DeliveryNoticeDetails_PrintPage.SetDataSetAction()
> 場所 aspx_DeliveryNotice_DeliveryNoticeDetails_PrintPage.InitialAction()
> 場所 Mazda.M2B.ASP_AAT.WebFormBase.ExecuteApplicationLogic(ApplicationLogicAction action)
> 場所 aspx_DeliveryNotice_DeliveryNoticeDetails_PrintPage.Page_Load(Object sender, EventArgs e)
> 場所 System.Web.UI.Control.OnLoad(EventArgs e)
> 場所 Mazda.M2B.ASP_AAT.WebFormBase.OnLoad(EventArgs e)
> 場所 System.Web.UI.Control.LoadRecursive()
> 場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
【質問】
エラーメッセージから、レジストリのprintjoblimitの値が上限に達したと読み取りました。
printjoblimit数はデフォルトの75に設定していますが、
75も同時アクセスはしておらず、printjobの解放漏れを疑っております。
(1)現在のprintjob数を、モニタする手段は無いのでしょうか?
(2)Crystal Reportの製品自体には、printjobのカウント制御がうまくいかないという様な、既知の問題はないのでしょうか?
(3)通常、アクセスの集中によりprintjob数が上限に達してエラーが発生した場合、
エクスポート処理の完了に伴いprintjob数が減ると、印刷可能な状態に自然回復するのでしょうか?
アプリケーションプールのリサイクルを行わないと、復旧しないということは、解放処理の漏れが濃厚なのでしょうか?
(4)printjoblimitの設定可能な範囲はいくつなのでしょうか?
(5)printjoblimitの設定値を変更した場合の影響はどうなのでしょうか?
例えば、設定値を75u21D2200に変更しただけで、
実際のprintjob数に関わらず、メモリやCPUの消費量が増えるなどの影響はないのでしょうか?
(6)printjob実行中に、ユーザがブラウザを×ボタンで閉じると、printjobのカウントは解放されるのでしょうか?
(7)レポート処理ジョブ(printjob) 数のカウントは、どの期間行われているのでしょうか?
クライアント要求を受けて PDF を出力するまででしょうか?
それともPDF を出力後、ブラウザのセッションが切れるまでか?
以上、宜しくお願い致します。
Edited by: Anegayama Shinichiro on Jun 23, 2009 4:08 AM