ASP.NET MVC 응용 프로그램에서 나는 xlsx
파일에있는 계산을 수행하고 있습니다. 우리는 계산에서 18K 변수 (xlsx
파일은 약 10MB 임)를 말하므로 SpreadSheetGear
인스턴스에로드하는 데 시간이 걸립니다. 따라서 요청 사이에 SpreadSheetGear
개체를 캐시해야합니다. 그렇지 않으면 각 요청에 영원히 걸릴 것입니다.ASP.NET MVC 응용 프로그램에서 SpreadSheetGear 객체를 캐시하는 방법은 무엇입니까?
지금 당장 In-Proc 응용 프로그램 캐시와 세션 캐시를 사용하여 요청간에 데이터를 저장합니다. 내 테스트 환경에서 IIS의 응용 프로그램 풀은 세션 시간 초과 (나는 기본 20 분이라고 생각하는 것)보다 빨리 (때로는 단 몇 분만) 재순환합니다. 풀 재활용은 모든 In-Proc 캐시 데이터의 손실을 초래하고, 긴로드 절차가 다시 발생해야합니다.
- SpreadSheetGear 객체를 직렬화하는 기능은 없습니다 (예 : xlsx 형식으로 저장하는 것 외에는). 그것을 직렬화 할 수 있다면 프로세스 캐싱 캐쉬로 전환 할 수 있습니다. 하지만 그때조차도 In-Proc 메모리 캐시에 비해 성능이 어떻게 작동하는지 조금 회의적입니다.
- 나는 왜 재활용이 일어 났는지 알 수 없었다. 서버가 메모리가 부족하지만 IIS 응용 프로그램 풀에 메모리 제한이나 VM 메모리 제한이 설정되어 있지 않습니다. IIS 로그에서 재활용 이벤트를 찾지 못했습니다.
- 응용 프로그램 풀 재활용에서 생존하기 위해 In-Proc 메모리 데이터를 보호 할 수있는 방법이 있습니까?
누구나 SpreadSheetGear + ASP.NET MVC + IIS와 유사한 경험이 있습니까?
지금까지 우리가하려고 시도 할 것은 Azure VM으로 상태 서버를 시작할 수 있습니다. VM은 확장 할 수 있습니다 (일부 제한 사항 : 가용성 그룹에서 미리 프로비저닝 됨). 비 라운드 로빈, ARR 인식로드 밸런서를 멋지게 shim 할 수 있다면 황금이 될 것입니다. –
Out of proc State Server doesn ' 어느 쪽이든, 그것은 직렬화를 역시 필요로한다. IIS가 재활용을 결정하지 않도록 최선을 다하고 있습니다. –