들어가며 IIS 에 설치한 Php 프로젝트는 대용량 파일을 올려놓는 프로젝트였는데요. 그렇다 보니 IIS 설정과 PHP 에 대용량 파일을 올리기 위한 설정을 진행해야 합니다. 01. IIS 요청 필터링 설정 IIS 의 서버 설정 중, 요청 필터링 메뉴에 접근 합니다. 해당 메뉴에서 "기능 설정 편집" 메뉴를 선택합니다. 해당 설정 편집 메뉴를 클릭하면, 허용되는 최대 콘텐츠 길이 (바이트)를 편집할 수 있는데요. 기본적으로 30MB 로 설정이 되어 있는데요. 이 부분에 최대 바이트 길이는 4.2GB 까지입니다. 해당 입력값의 한계값인 4294967295 값을 입력합니다. 02. php.ini 파일 수정 제가 php 를 설치한 위치는 D:\\ 쪽인데요. 해당 php 설치 폴더에 접근하게 되면, php.in..
들어가며 IIS 서버를 이용해서 PHP 프로젝트를 설정할 경우 아래와 같은 오류가 발생했을때, 해결하는 방법을 정리했습니다. 에러메시지는 아래와 같은데요. Internal Server Error scriptProcessor could not be found in application configuration. 01. 500.0 - Internal Server Error IIS에 PHP로 구성된 프로젝트를 설정하고 있던 도중, 위와 같은 에러메시지가 나타 났는데요. " scriptProcessor를 애플리케이션 구성에서 찾을 수 없습니다." 자세한 오류 정보: 모듈 FastCgiModule 알림 ExecuteRequestHandler 처리기 PHP FastCgi 오류 코드 0x80070585 처음 보는 에..
들어가며 처음으로 SignalR 을 이용해서 채팅 서버를 구현한 것이라, 이를 위해 성능을 검증해야 하는 상황이 생겼습니다. 어찌보면 당연한 프로세스 였는데요. 저희가 진행한 성능검증은, 1대의 IIS 서버에 어느정도의 Request를 감당할 수 있는지, 최대 동접인원을 기준으로 한대의 서버에 몇명의 유저를 감당할 수 있는지 등등 이였습니다. 진행하는 과정에서 SignalR의 성능 튜닝을 아래와 같이 진행하였습니다. ※ SignalR 2.x 버전의 IIS 환경임을 참고해주세요. IIS 구성 수정 SignalR의 성능 튜닝을 위해서는, 어플리케이션당 최대 동시 요청자 수를 늘립니다. IIS 관리자에서 SignalR로 설정되어 있는 사이트 선택시, 하단부에 구성편집기 메뉴를 선택하면, 아래와 같은 화면이 보..
IIS WebServer를 사용해서 서비스 하는 Web 어플리케이션의 경우 장기간 접속이 되지 않은 페이지에 대해서 Sleep 상태로 전환이 되는 경우가 발생하는데요. 이때 접속을 시도하게 되면, 약간의 딜레이가 발생하게 됩니다. 이런 문제는 사전에 예방할 수 있으며, 아래의 방법으로 웹 어플리케이션이 항상 준비단계로 대기하도록 설정 할 수 있습니다. 어플리케이션 풀 설정 IIS관리자 (inetmgr) 을 실행한 뒤, 어플리케이션 풀에서 담당풀의 기본값 설정을 선택합니다. IIS 관리자는 시작 -> 실행 -> inetmgr로 실행하셔도 됩니다. 시작모드의 기본값이 OnDemand 로 되어 있는데요. 이를 AlwaysRunning 으로 바꿔주면, 항시 준비 상태로 요청을 기다립니다. 유후 시간 제한 조치도..
카테고리를 새로 만들자니 애매해서, 연관성이 높은 카테고리에 일단 배치했습니다. 정확이 원인이 밝혀지지 않아서 포스팅이 조심스럽긴 하지만, iisreset /stop, iisreset /restart 명령에도 불구하고, 어플리케이션이 정상적으로 종료되지 않는 현상이 발견되었습니다. Application_End가 호출이 되었음에도... 몇번의 호출이 더 발생을 하네요. 내부적으로 호출되는 Timer 의 영향인지, 조금더 확인이 필요하지만 추후에 재 포스팅 하기로 하고, 일단 iisreset 이외에 중지 방법을 알게 되어서 포스팅합니다. net start / stop cmd> net stop w3svc cmd> net start w3svc Windows 10 및 Windows Server 2019 아래 버전..
IIS 프로세스가 실행 요청을 받기 전에 다음 단계에 설명 된 일부 예비 처리가 발생합니다. 요청이 HTTP.sys 에 도착합니다. HTTP.sys 는 요청이 유효한지 확인합니다. 요청이 유효하지 않으면 유효하지 않은 요청에 대한 코드를 클라이언트로 다시 보냅니다. 요청이 유효한 경우, 정적 컨텐츠를 즉시 제공할 수 있으므로 HTTP.sys는 요청이 정적 컨텐츠 (HTML)에 대한 것인지 확인 합니다. 요청이 동적 내용에 대한 것이면, HTTP.sys 는 응답이 커널모드 캐시에 있는지 확인 합니다. 응답이 캐시에 있으면 HTTP.sys 는 응답을 즉시 반환합니다. 응답이 캐시되지 않으면, HTTP.sys는 올바른 요청 큐를 결정하고, 해당 큐에 요청을 배치 합니다. 이론적으로 HTTP.sys 가 처리할 ..