안녕하세요 여러분, 읽어주셔서 감사합니다.
마지막 호출 이후 일정 기간이 지난 후 처음 호출할 때 애플리케이션을 시작하는 데 오랜 시간이 걸리는 지연 문제가 있습니다. 웹 애플리케이션은 WCF 서비스이며 실제 처리가 시작되기까지 약 18초의 지연이 발생합니다. 이제 나는 이 지연을 줄이는 방법을 알고 있으므로 그것은 내 질문이 아닙니다(어쨌든 스택오버플로 거래에 가깝습니다).
내 질문은, 작업자 프로세스 종료를 비활성화하고 작업자 프로세스 재활용을 비활성화했음에도 불구하고 일정 기간 동안 활동이 없으면 애플리케이션이 여전히 '종료'되는 이유를 설명할 수 있는 사람이 있습니까?
이를 이해하려면 IIS에서 호스팅되는 WCF 서비스의 내부 작동 방식에 대해 더 많이 알아야 합니다. 이에 대한 직접적인 답변이 있을 것으로 기대합니다.
DC님, 도움을 주셔서 감사합니다.
답변1
작업자 프로세스의 재활용 및 성능 탭에서 모든 항목을 선택 취소한 경우 IIS는 프로세스를 종료해서는 안 됩니다. 프로세스가 "종료"되는 시간에 해당하는 이벤트 로그 항목이 있습니까? WCF 앱이 잠재적으로 충돌하는 것 같습니다. WCF는 표준 .NET 앱처럼 이벤트 로그에 예외를 기록하지 않으므로 자체 로그를 작성하지 않는 경우에는 켜는 것이 좋습니다.WCF 추적그게 문제인지 알아보려고요.
그 동안 문제에 대한 빠르고 추악한 해결책은 WCF 서비스에서 일종의 저렴한 테스트 또는 읽기 전용 트랜잭션을 만들고 X초마다 폴링하여 작업자 프로세스를 코드와 함께 유지하도록 모니터링 앱이나 스크립트를 구성하는 것입니다. JIT 이전.
답변2
나는 이 문제가 WCF와 관련이 없으며 nHibernate가 매핑을 정렬하는 데 결함이 있다고 생각합니다. nHibernate가 그럴 필요가 없도록 nHibernate 매핑 파일을 컴파일하여 문제를 해결했습니다.