ASP.NET MVCアプリケーションでは、私はxlsx
ファイル内の計算を行っています。計算では18K変数(xlsx
ファイルは約10MBです)を扱っているため、SpreadSheetGear
インスタンスにロードするにはしばらく時間がかかります。したがって、要求の間にSpreadSheetGear
オブジェクトをキャッシュする必要があります。そうしないと、各要求には永遠の時間がかかります。ASP.NET MVCアプリケーションでSpreadSheetGearオブジェクトをキャッシュする方法は?
今私は、要求間でデータを保存するために、インプロセスアプリケーションキャッシュやセッション・キャッシュを使用しています。私のテスト環境では、IISのアプリケーションプールは、私たちのセッションのタイムアウト(私はデフォルトの20分だと思います)より早く(時にはほんの数分で)リサイクルします。プールのリサイクルにより、すべてのIn-Procキャッシュデータが失われ、長いロード手順が再度発生する必要があります。
- 私が見る限り、SpreadSheetGearオブジェクトをシリアル化する機能はありません(xlsx形式で保存する以外)。それを直列化できれば、アウトプロセスキャッシングビークルに切り替えることができます。しかし、それでも私はIn-Procメモリキャッシュと比較してどのように動作するのか、少し懐疑的です。
- 私はリサイクルが起こる理由を理解できませんでした。サーバーはメモリが不足していますが、IISアプリケーションプールにメモリ制限またはVMメモリ制限が設定されていません。 IISログにリサイクルイベントが見つかりません。
- Appプールのリサイクルに耐えられるようにIn-Procのメモリデータを保護する手段はありますか?
SpreadSheetGear + ASP.NET MVC + IISに似た経験を持っている人はいますか?
私たちがしようとしているのは、Azure VMを使って状態サーバーを起動できるところです。 VMはスケールアウトすることもできます(いくつかの制限があり、可用性グループから事前にプロビジョニングされています)。非ラウンドロビンのARR対応ロードバランサをきれいにシムできるならば、私はゴールデンになります –
State of server does not 'どちらも助けてください。それには直列化も必要です。 IISがリサイクルすることを決めるのではなく、私たち自身が最善を尽くすことを望んでいます –