앞의 글에서 PHP 관련하여 적어보았습니다. FastCGI 설정하는 법과 PHP를 설정하는 법을 살펴보겠습니다.
서버관리자 - 롤 서비스에서 CGI를 선택하세요. CGI와 FastCGI 서비스를 모두 설치합니다.
이제 PHP 엔진이 필요하죠. http://www.php.net/downloads.php를 클릭하셔서 non-Thread safe 버전의 PHP를 다운 받으세요. non-Thread safe와 FastCGI를 함께 사용하셔야 최적의 성능을 보장받을 수 있습니다. Thread safety check를 할 필요가 없기에 시간이 단축되는 것이죠.
1. 파일을 압축해제하세요. C:\PHP 디렉토리를 만드시는 것이 좋습니다. 또한, php.ini-recommended를 php.ini로 파일명을 바꾸세요
2. php.ini 파일을 오픈 한 후 몇 가지 파라미터의 주석을 해제하세요.
- fastcgi.impersonate = 1
- cgi.fix_pathinfo = 1
- cgi.force_redirect = 0
- open_basedir 설정 (웹 사이트 컨텐츠가 있는 폴더나 네트웍 경로)
3. PHP가 제대로 설치되었는지 확인을 위해 명령문에 아래와 같이 입력
C:\PHP> php -info
IIS가 PHP 어플리케이션을 처리하기 위해 처리기 매핑(Handler Mapping)을 설정해야 합니다. 주요 목적은 PHP 파일의 요청을 FastCGI를 통해 PHP 엔진으로 보내는 것입니다.
요청 Path: *.php
모듈: FastCGIModule
실행파일: C:\php-cgi.exe
이름: PHP via FastCGi (원하는데로 설정)
대화상자에서 OK를 선택하시면 됩니다.
이후에 c:\inetpub\wwwroot 폴더에 phpinfo.php 파일을 하나 생성합니다.
내용: <?php phpinfo(); ?>
브라우저를 연다음 http://localhost/phpinfo.php를 입력하면 설정이 제대로 되었다면 php에 대한 정보를 보여주는 화면이 나옵니다.
이제 다 끝났습니다. 마지막으로 PHP와 FastCGI 리사이클링을 위한 설정을 해보죠
FastCGI는 native PHP 리사이클링이 이루어지기 전에 php-cgi.exe 프로세스들을 리사이클링 시킵니다. 바로 이 리사이클링은 설정 프로퍼티, instanceMaxRequests에 의해 조절됩니다. 이 값은 FastCGI가 리사이클링 되기 전에 몇개의 요청을 처리할 것인지를 정하는 것이죠. PHP 역시 비슷한 설정값을 가지고 있는데, PHP_FCGI_MAX_REQUESTS가 바로 그것입니다. 만약 instanceMaxRequests의 값을 PHP_FCGI_MAX_REQUESTS의 값보다 작거나 같게 설정하면 PHP의 리사이클은 절대 발생하지 않을 것입니다.
만약, 파라미터 값이 설정되지 않으면 디폴트 값을 사용하게 됩니다.
instanceMaxRequests: 200, PHP_FCGI_MAX_REQUESTS: 500 (대부분의 PHP 빌드에서)
파라미터 값을 설정하려면 아래와 같은 명령문을 사용하시면 됩니다.
c:\>%windir%\system32\inersrv\appcmd set config -section:system.webServer/fastCGI /[fullPath='c:\{php_folder}\php-cgi.exe'].instanceMaxRequests:10000
c:\>%windir%\system32\inersrv\appcmd set config -section:system.webServer/fastCGI /
[fullPath='c:\{php_folder}\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']
www.iis.net에서 참조
'2008/07/02'에 해당되는 글 3건
- 2008.07.02 PHP를 Windows Server 2008에서 구동하기
- 2008.07.02 제4회 마이크로소프트 호스팅 세미나를 개최합니다.
- 2008.07.02 Windows Server 2008 IIS7 웹서버의 성능 향상 2
호스팅2008. 7. 2. 14:57
호스팅2008. 7. 2. 14:16

등록하기 (이 링크를 눌러주세요)
7월 10일 섬유센터 17층 세미나실에서 제4회 마이크로소프트 호스팅 세미나를 개최합니다.
이번 세미나는 KIDC와 함께 진행합니다. 이후에도 주요 IDC와 함께 세미나를 진행할 계획이며, 각 IDC의
입주사가 아닌 IDC, 호스팅 업체, 고객사도 참가 가능합니다.
Windows Server 2008, IIS7 웹서버, 실버라이트를 포함하여 호스팅 자동화 솔루션에 대한 발표 및 데모도 진행될 예정입니다. 많은 참여 부탁드립니다.
감사합니다.
호스팅2008. 7. 2. 10:56
IIS7을 사용하면 어느 정도의 성능 향상을 얻을 수 있는지 궁금하시죠? Microsoft.com이 IIS7에서 구동되고 있다는 것 아시죠? IIS6과 비교하여 어느정도의 성능이 향상됐는지 실제 데이터를 통해 보여드리겠습니다.
Windows Server 2008이 올해 3월에 출시되었고 많은 기업에서는 지금 왜 Windows Server 2003에서 업그레이드를 해야하는지 다양한 각도로 분석을 하고 있습니다. 당연히 의사결정을 위해서는 실제로 구현하고 효과를 보는 업체의 레퍼런스를 보기 원하시죠. IIS7의 메타베이스가 아닌 파일 기반의 설정 환경, 모듈화 아키텍처는 웹서버 관리를 훨씬 유연하게 할 수 있게 되었죠. 그렇다면 IIS 6.0 / WS2003 보아 어느 정도 더 뛰어난 성능을 발휘하는지 살펴 보도록 하겠습니다.
IIS7가 IIS6보다 초당 31% 정도의 더 많은 요청을 처리했습니다. 더 많은 처리를 하기때문에 CPU 사용량은 이전보다 조금 더 사용하게 됩니다.
효과를 분석하기 위해 "효율성"과 "CPU 사이클 당 요청하는 처리 수"를 사용했습니다. 이 메트릭을 사용하면 IIS 7.0 / Windows Server 2008이 IIS 6.0 / Windows Server 2003 SP2 보다 10% 정도 더 효율적인 것으로 나타났고, 이 자료는 www.microsoft.com 사이트를 운영하면서 조사된 값입니다.
Performance Metrics WS2003 SP2 WS2008 Change
RPS / CPU Utilization (%) = Requests per CPU Cycle 4.36 4.84 10.9%
Server Efficiency
. WS2003 SP2: 4.36, WS2008 RTM: 4.84

CPU Utilization (%)
. WS2003 SP2: 44.8%, WS2008 RTM: 52.8% ~ 17.9% 더 많이 사용함
(WS2008이 더많은 요청 처리하기 때문)

Web Service - 초당 총 요청 처리 수 (RPS)
. WS2003 SP2: 194, WS2008 RTM: 255 ~ 31.4% 더 많은 트래픽을 처리함

Web Service - 현재 커넥션 수
. WS2003 SP2: 280, WS2008 RTM: 294 ~ 5% 증가

테스트에 사용된 www.microsoft.com 사이트는 총 80대의 서버로 구성되어 있습니다. 4개의 로드밸런싱 된 클러스터로 20대씩 서로 다른 데이터센터에서 구동되고 있지요. 그 중 하나의 클러스터, 즉 20대의 서버를 가지고 자료를 분석하였습니다.
Hardware: 모델 HP DL585 G1 (4 듀얼 코어 CPU), RAM은 32GB 사용
OS: Windows Server 2008 RTM (Build: 6.0.6001.18000) 64비트 엔터프라이즈 에디션
로드밸런싱: 하드웨어 로드밸런싱을 사용함. 로드밸런싱 알고리즘은 "Least Current Client Connections"을 사용하였음 (즉, 클라이언트 커넥션 수가 가장 작은 서버로 요청을 보내는 방식)
분석방식: 월요일 부터 수요일까지 72시간 동안의 로그를 모니터링함
Windows Server 2008이 올해 3월에 출시되었고 많은 기업에서는 지금 왜 Windows Server 2003에서 업그레이드를 해야하는지 다양한 각도로 분석을 하고 있습니다. 당연히 의사결정을 위해서는 실제로 구현하고 효과를 보는 업체의 레퍼런스를 보기 원하시죠. IIS7의 메타베이스가 아닌 파일 기반의 설정 환경, 모듈화 아키텍처는 웹서버 관리를 훨씬 유연하게 할 수 있게 되었죠. 그렇다면 IIS 6.0 / WS2003 보아 어느 정도 더 뛰어난 성능을 발휘하는지 살펴 보도록 하겠습니다.
IIS7가 IIS6보다 초당 31% 정도의 더 많은 요청을 처리했습니다. 더 많은 처리를 하기때문에 CPU 사용량은 이전보다 조금 더 사용하게 됩니다.
효과를 분석하기 위해 "효율성"과 "CPU 사이클 당 요청하는 처리 수"를 사용했습니다. 이 메트릭을 사용하면 IIS 7.0 / Windows Server 2008이 IIS 6.0 / Windows Server 2003 SP2 보다 10% 정도 더 효율적인 것으로 나타났고, 이 자료는 www.microsoft.com 사이트를 운영하면서 조사된 값입니다.
Performance Metrics WS2003 SP2 WS2008 Change
RPS / CPU Utilization (%) = Requests per CPU Cycle 4.36 4.84 10.9%
Server Efficiency
. WS2003 SP2: 4.36, WS2008 RTM: 4.84
CPU Utilization (%)
. WS2003 SP2: 44.8%, WS2008 RTM: 52.8% ~ 17.9% 더 많이 사용함
(WS2008이 더많은 요청 처리하기 때문)
Web Service - 초당 총 요청 처리 수 (RPS)
. WS2003 SP2: 194, WS2008 RTM: 255 ~ 31.4% 더 많은 트래픽을 처리함
Web Service - 현재 커넥션 수
. WS2003 SP2: 280, WS2008 RTM: 294 ~ 5% 증가
테스트에 사용된 www.microsoft.com 사이트는 총 80대의 서버로 구성되어 있습니다. 4개의 로드밸런싱 된 클러스터로 20대씩 서로 다른 데이터센터에서 구동되고 있지요. 그 중 하나의 클러스터, 즉 20대의 서버를 가지고 자료를 분석하였습니다.
Hardware: 모델 HP DL585 G1 (4 듀얼 코어 CPU), RAM은 32GB 사용
OS: Windows Server 2008 RTM (Build: 6.0.6001.18000) 64비트 엔터프라이즈 에디션
로드밸런싱: 하드웨어 로드밸런싱을 사용함. 로드밸런싱 알고리즘은 "Least Current Client Connections"을 사용하였음 (즉, 클라이언트 커넥션 수가 가장 작은 서버로 요청을 보내는 방식)
분석방식: 월요일 부터 수요일까지 72시간 동안의 로그를 모니터링함