OperationCanceledException

テストしてたら、OperationCanceledExceptionが発生しました。

pointList.RecordedValuesを使って値を取得するテストを、マルチスレッドで行っていました。

100タグで6ヶ月分の1時間ごとの情報を取得する処理を、一時間くらいノンストップでプログラムを走らせていました。

たいたい10-20秒くらいで1スレッドが終わっているのですが、なぜこのExceptionが発生したのかわかりません。

timeoutの時間を調整したりすることで、防ぐことはできるのでしょうか?

 

また、マルチスレッドでPI のデータ取得するプログラムを呼ぶと、それぞれのスレッドの処理時間がかかってしまい、処理が遅くなります。

シングルスレッドの方が処理がはやく終わります。

マルチスレッドの方がはやいと期待していたのですが、PI Server側でなにか設定が必要でしょうか?

 

よろしくお願いします。

Parents
  • timeoutなどが発生していたとすると、PI Data Archiveのメッセージログに記載されるかと思います。

    PI SMT > Operation > Message Logsで何かメッセージなどでていないのでしょうか?

    PI Data Archiveのtimeout設定であれば

    PI SMT > Operation > Tuning Parameters > ArchiveタブのArchive_MaxQueryExecutionSecなどが該当するかと思います。

    そのほか、イベント数の制限もございます。ArchiveタブのArcMaxCollectです。

    PI Data ArchiveのArchive Subsystemはスレッド数が設定できます。

    ArchiveタブのPIarchss_ThreadCountはデフォルトの8のままでしょうか?

    CPUをたくさん載せているマシンであれば、そのCPUの数の2倍を設定することが良いかと思います。

    PI Archive Subsystemのスレッドの使用状況は

    PI SMT > Operation > PI Services > PI Archive Subsystemを選択することでThread Details for SelectionにPI Archive Subsystemのスレッド使用状況が表示されます。

Reply
  • timeoutなどが発生していたとすると、PI Data Archiveのメッセージログに記載されるかと思います。

    PI SMT > Operation > Message Logsで何かメッセージなどでていないのでしょうか?

    PI Data Archiveのtimeout設定であれば

    PI SMT > Operation > Tuning Parameters > ArchiveタブのArchive_MaxQueryExecutionSecなどが該当するかと思います。

    そのほか、イベント数の制限もございます。ArchiveタブのArcMaxCollectです。

    PI Data ArchiveのArchive Subsystemはスレッド数が設定できます。

    ArchiveタブのPIarchss_ThreadCountはデフォルトの8のままでしょうか?

    CPUをたくさん載せているマシンであれば、そのCPUの数の2倍を設定することが良いかと思います。

    PI Archive Subsystemのスレッドの使用状況は

    PI SMT > Operation > PI Services > PI Archive Subsystemを選択することでThread Details for SelectionにPI Archive Subsystemのスレッド使用状況が表示されます。

Children
No Data