CAFE

댓글

뒤로

클라이언트 세션과 무관하게 서버에 계속 살아있는 타이머 변수 만들기

작성자다행| 작성시간17.11.03| 조회수379| 댓글 6

댓글 리스트

  • 작성자 심재운 작성시간17.11.03 윈폼에 asp.net web api 를 호출해서 사용하고 있다는 말씀인지요????
  • 답댓글 작성자 다행 작성자 본인 여부 작성자 작성시간17.11.03 asp.net mvc web api 형태의 프로젝트 입니다
  • 작성자 몬난아 작성시간17.11.06 1. 타이머는 닷넷 BCL에 3가지 종류가 있으며 각기 Thread생성 동작이 틀립니다.
    2. 웹프로그램에서 타이머를 생성하는것자체가 위험한게 IIS등에 서버에 올라가면 node.js처럼 싱글 쓰레드로 동작하는것이 아니라 멀티쓰래드로 생성될것입니다. 보통 최소 CPU수 만큼 생성은 됩니다. 보통 4코어 쓴다면 최소 생성하신 변수가 static이라 할지라도 4개가 메모리에 있을겁니다.

    3. wcf로 개발하시고 InstanceContextMode.Single 모드로 실행하시면 1개의 쓰레드에서 정상 동작할것같아보이나..이건 본인의 선택사항이 되는게 아닐까 싶네요
  • 작성자 심재운 작성시간17.11.06 비추천하지만... 흠.... IIS의 응용 프로그램 풀의 기본 설정에는 제한 시간이 있습니다. 따라서 웹 API를 한번 호출하더라도 제한 시간이 경과하면 응용 프로그램 풀이 종료됩니다. 그래서 null 이 나올겁니다. 따라서 iis 의 pool timeout 을 비활성화 해야 하는데요. http://ssamlee.tistory.com/40
  • 작성자 퇴근5분전 작성시간17.11.06 음. 서버에서 도는거면.. 스케쥴러 같은걸로 작업해서 DB나 특정 파일에 작성하는 형태로 하시고
    서비스에서 이 파일에 접근하는 형태로 하셔야 되는게 아닐까용? ... 뭘 만드시려는지...
  • 작성자 랜덤 작성시간17.12.09 좀 늦었지만 도움이 되신다면....이방법 문제없고요 수십개 프로젝트에서 잘도는 중입니다. 일단 타이머 대신 quartz.net을 사용하시고 정시 작동을 원하시면 cron으로 설정하시고. 싱글톤으로 하시고 따로 cs에 코딩하시면 쓰레드 상관없고요. global 이나 startup에서 시작하시면 되고요. IIS 가 중요한데 버젼마다 다르지만 AlwaysRunning을 꼭하셔야 되고요 idel timeout을 0으로 하시고 또 몇가지 세팅은 찿아보시고요 그러면 계속 돌아갑니다 재부팅 해도요. 단점은 웹코드를 업데이트하면 도중에 쓰레드가 죽고 다시지작하고요. 메모리를 많이 먹는 프로세스 안좋습니다.
맨위로

카페 검색

카페 검색어 입력폼
카카오 이모티콘
사용할 수 있는 카페앱에서
댓글을 작성하시겠습니까?
이동시 작성중인 내용은 유지되지 않습니다.