機能:タイムアウト保護

connect for Pleasanter機能

connect for Pleasanterのタイムアウト保護ついて説明します。

概要

  • Pleasanterのサーバースクリプトで設定されてるタイムアウト値を超えた場合は500エラーが発生します。
  • connect for Pleasanter」は、サーバースクリプトで外部サービスからのデータ取得>マッピング処理>Pleasanterへのデータ更新を上記のタイムアウト値以内に終わらせる必要があります。
  • タイムアウトエラー対策として、データ取得とデータ更新の件数を制御します。
  • データ取得は、CFPサービス管理サイトの「リクエスト情報」に定義するページ数(件数)とそのページ数を何回行うかを決めるためCFPマッピング管理サイトの「最大取得ページ数」を設けています。なお、外部サービスのAPI仕様ではリクエスト情報では指定できないケースもあります。
  • データ更新は、CFPマッピング管理サイトの「更新処理件数」で指定します。
  • 外部サービスのAPI仕様とPleasanterを運用するWeb/DBサーバーの仕様を把握した上で上記のパラメータでタイムアウトエラーにならないようにチューニングとテストが必要です。

処理時間の確認

  • まずは、「connect for Pleasanter」で実際にサイト連携を行ってください。
  • CFPマッピング管理サイトの「前回処理時間」に実際にかかった処理時間を確認することができます。
    • Total:処理時間
    • Fetch:サイトからデータ取得した処理時間(取得件数)
    • Upsert:上記データをPleasanterに更新(追加・更新)した処理時間(最大更新件数)
    • Timestamp:処理終了日時
[Total] 5.22s / [Fetch] 1.85s (9 records) / [Upsert] 2.90s (Limit: 100) / [Timestamp] 2026/03/26 18:26:58 (JST)
  • 運用環境のスペックによりますが、上記例の1件当たりの処理時間は以下の通りです。
    • Total:0.58秒/件 >>> 9.7分/1,000件、96分/10,000件
    • Fetch:0.21s/件 >>> 3.4分/1,000件、34分/10,000件
    • Upsert:0.32s/件 >>> 5.4分/1,000件、53分/10,000件

タイムアウト

「オンデマンド同期」と「スケジュール同期」の運用要件を前提に以下のチューニングを行います。

外部サービスAPI仕様確認

  • 1回のAPIリクエストで取得できるデータ(ページ)件数を確認
  • リクエストパラメータに取得データ(ページ)件数があるか確認

Pleasanter運用環境確認

  • WEB/DBサーバーのスペックを確認
  • Webサーバーのタイムアウト値を確認
  • General.jsonのBulkUpsertMaxの確認

初期データインポート

  • 外部サービスの同期データがある程度大量にある場合はPleasanterのインポート機能で予め取り込んでおく
  • またはスケジュール同期・オンデマンド同期でインポートしておく
  • オンデマンド同期の結果画面およびCFPマッピング管理サイトの前回処理時間に処理時間が表示・保存されているので以下のパラメータのチューニングの参考にしてください

スケジュール同期周期設定

  • 運用要件を踏まえた周期で設定

サーバースクリプト「タイムアウト値」設定

  • オンデマンド同期用サイトのconnect for Pleasanter呼び出し用サーバースクリプトのタイムアウト値を適切に設定(2~10分)
    • WEBサーバーのセッションタイムアウト値以内で設定
  • スケジュール同期のテナントの管理>connect for Pleasanter呼び出し用サーバースクリプトのタイムアウト値を適切に設定
    • 周期×90%、例えば日次周期なら22時間を推奨
    • 外部サービスのAPIコール数上限を確認

CFPサービス管理サイト「リクエスト情報」設定

  • 外部サービスAPI仕様でリクエストパラメータとデータ(ページ)件数を設定

CFPマッピング管理サイト「最大取得ページ数」設定

  • 外部サービスAPI仕様でリクエストパラメータとデータ(ページ)件数を考慮し設定

CFPマッピング管理サイト「更新処理件数」設定

  • Pleasanter運用環境と上記データ(ページ)件数取得時間を考慮し設定

履歴更新の無効化

  • テーブルの管理>エディタ>自動バージョンアップ>規定・常時を無効に設定
    • 履歴が必要な場合はそのままにしてください

マッピング項目の削減

  • マッピング項目が減らせないか検討ください

DBインデックスの追加

  • SQL Serverの例
-- 対象のSiteIdが '12345' で、キー項目が 'ClassA' の場合
CREATE NONCLUSTERED INDEX IX_Results_SiteId12345_ClassA 
ON Results (ClassA)
WHERE SiteId = 12345;
  • PostgreSQLの例
-- 対象のSiteIdが '12345' で、キー項目が 'ClassA' の場合
CREATE INDEX "IX_Results_SiteId12345_ClassA" 
ON "Results" ("ClassA")
WHERE "SiteId" = 12345;

その他

  • 拡張SQLの実装
  • DBサーバーのパフォーマンスチューニング
  • リソースの使用状況を確認し、WEBサーバー・DBサーバーのスケールアップ

お問い合わせ

「connect for Pleasanter」のデモや製品に関するお問合せはお気軽にご相談ください。

タイトルとURLをコピーしました