SPECweb2005 Install & Configure Guide in Linux(fedora 13) Version # 작성일작성자 E-mail 설명 1.00 2011.3.3 김호연 hykim@q.ssu.ac.kr 첫버전작성함 본문서는 SPECweb2005를설치하고구동하는과정을설명합니다. 본문서의목적은, 어떠한시행착오없이 SPECweb2005을보다쉽게사용할수있도록함에있습니다. 본문서는 SPECweb2005에서제공하는매뉴얼을기반으로작성되었습니다.(SPECweb2005\docs\index.html) 본문서의내용은추가 / 삭제 / 수정이가능하며, 수정본을 http://nclab.tistory.com/ 의 SPECweb2005 코너에올려주시거나, 상단의제작자에게메일을주시기바랍니다. 알아둘내용 기본적인 Linux관련지식이있다는가정아래내용진행. 문서에서사용된기호의의미 : 실제적으로 command가입력되는부분. : 설명및할당값 < 디렉토리 > ] # : command를입력하는디렉토리. ] # 의경우, 어디서든상관없음을의미. Apache : Linux fedora에서 'httpd' 라는이름으로기본제공됨. 즉, Apache=httpd. SPECweb2005 설치 Web Server, Besim, Client 공통요구사항 > java : Web server, Besim, client에각각설치. ] # yum groupinstall java console을통해설치진행 > java -jar setup.jar -i console 설치에어려움은없을것이라판단됨. 안내를따라설치할것. 이후의내용은 default값을기준으로함. ⓵ Web Server 요구사항 > Apache(httpd) : 이문서에서는, Apache를이용한 php 사용. > Version Check : PHP 4.3.n 이상의버전이필요함. 다음명령어를통해설치혹은 update ] # yum install php 1) ⓵ 에서 webserver 를설치 : '/web2005-1.20/' 디렉토리에설치됨 1
2) Script 를 Apache(httpd) 의 'DocumentRoot' 디렉토리로복사 ] # cp /web2005-1.20/scripts/php/* /var/www/html/ DocumentRoot : httpd 의환경설정파일인 /etc/httpd/conf/httpd.conf 파일내의변수. Default 값 = /var/www/html/ 3) DocumentRoot 디렉토리에서, 권한부여 /html]# chmod -R a+rw bank/ ecommerce/ support/ Smarty-2.6.7/ 4) Wafgen 4-1) Wafgen README를정독한다. 4-2) '/web2005-1.20/wafgen/unix/' 에해당하는파일들을수정 'SIMULTANEOUS_SESSIONS' 과 'DOCROOT' 값을반드시넣어주어야함. SIMULTANEOUS_SESSIONS : 동작시킬 Thread의최대개수할당 *_image_*.rc 의경우, SIMULTANEOUS_SESSIONS가 Section B 아래존재하므로변경하지말것. DOCROOT : '2)' 의 'DocumentRoot' 값할당 4-3) '/web2005-1.20/wafgen/ 에서 wafgen 실행 : workload 설치 /wafgen] # java -Xms384m -Xmx384m -jar wafgen.jar <workload>.rc 4-4) <DOCROOT>/<workload>/ 에 dynamic_padding 과 images 디렉토리생성확인 5) Web server 동작 test 5-1) Apache(httpd) 재시작 ] # service httpd restart 5-2) 브라우저를통하여, login.php 접속 : URL = http://<web server IP address>/bank/login.php 5-3) id=1, password=1 입력하여, login 5-4) 각각의 page를열어, 제대로열리는가를확인, error없이열린다면정상동작 ⓶ Besim 요구사항 > ⓵ 의 Web Server 와동일 1) 1. 에서 Besime(backend simulator) 설치 : '/web2005-1.20/' 디렉토리에설치됨. 2) '/web2005-1.20/besim/make_readme' 정독! 우리는 fcgi 와 PHP 를사용할것임 3) fcgi 설치 3-1) '/web2005-1.20/besim/fcgi-2.4.0/readme' 정독 3-2) fcgi 설치 : '/web2005-1.20/besim/fcgi-2.4.0/' 에서아래 command 입력 /fcgi] #./configure /fcgi] #./make /fcgi] #./make install EOR error 발생시 : /fcgi-2.4.0/libfcgi/fcgio.cpp 에 '#include <stdio.h>' line 추가 2
4) Besim compile 4-1) '/web2005-1.20/besim/ 에 Make_Readme 정독 4-2) 'besim_fcgi.fcgi' 를설치하기위한디렉토리생성 /Besim] # mkdir /var/www/fcgi-bin/ 4-3) Besim compile /Besim] # make fcgi TARGET='clean all install' DEST=/var/www/fcgi-bin/ 4-4) '/var/www/fcgi-bin/ 에 Besim_fcgi.fcgi 파일생성확인 5) mod_fastcgi.so 설치 5-1) httpd-devel 설치 ] # yum install httpd-devel 5-2) mod_fastcgi 다운로드및설치 ( http://fastcgi.com/dist/ ) /mod_fastcgi] # cp Makefile.AP2 Makefile /mod_fastcgi] # make top_dir=/usr/lib/httpd install /usr/lib/httpd/modules/ 에 mod_fastcgi.so 생성확인 5-3) FastCGI에서 Unix socket 파일들을저장하기위한디렉토리생성및권한설정 ] # mkdir -p /etc/httpd/fastcgi ] # chmod 777 /etc/httpd/fastcgi 6) httpd 환경설정 6-1) '/etc/httpd/conf/httpd.conf' 파일수정 1> 아래 Line을 "Dynamic Shared Object(DSO) Support" section에추가 : LoadModule fastcgi_module modules/mod_fastcgi.so 2> 아래 Line들을 ScriptAlias /cgi-bin/" Line 바로뒤에추가 : ScriptAlias /fcgi-bin/ "/var/www/fcgi-bin/" : FastCgiIpcDir /etc/httpd/fastcgi 3> 아래 Line들을 <Directory "var/www/cgi-bin section 뒤에추가 : <Directory "/var/www/fcgi-bin"> : AllowOverride None : Options +ExecCGI -Includes : SetHandler fastcgi-script : Order allow, deny : Allow from all : </Directory> : AddHandler fastcgi-script fcgi 4> DocumentRoot의값을아래와같이변경 : DocumentRoot "/" 5> 주석부분 # This should be changed to whatever you set DocumentRoot to." 아래의값을아래 Line과같이수정수정 : <Directory "/"> 3
7) Besim 동작 test 7-1-1) apache(httpd) restart ] # service httpd restart 7-1-2) '/web2005-1.20/besim/' 에서, 'test_besim_bank.pl' 실행. 아래 command 입력. /Besim] # perl test_besim_bank.pl http://<besimipaddress>:81/fcgi-bin/besim_fcgi.fcgi/ 7-2) 브라우저를통하여, http://<besimipaddress>:81/fcgi-bin/besim_fcgi.fcgi/ 접속 아래와같은 page 출력확인 에러가발생한다면, 아래의명령어로, message를추적하여수정할것. Besim의경우, httpd의 error message를통해서, 쉽게문제점추적이가능함 ] # tail -f /etc/httpd/logs/access_log ] # tail -f /etc/httpd/logs/error_log Besim의 httpd 환경설정파일을 http://nclab.tistory.com/ 에서다운로드받을수있음 4
⓷ Client 설치 Soongsil Univ. Network computing Lab. Hoyeon Kim 1) 1. 에서 Client 및 Prime Client 를설치 : '/web2005-1.20/' 디렉토리에설치됨 2) '/web2005-1.20/harness/' 에있는 base 환경설정파일들을아래 command로복사하여, 사용 각환경파일들을이용하여, SPECweb이구동됨. /Harness] # cp SPECweb_Banking.Unix-PHP.config SPECweb_Banking.config /Harness] # cp SPECweb_Ecommerce.Unix-PHP.config SPECweb_Ecommerce.config /Harness] # cp SPECweb_Support.Unix-PHP.config SPECweb_Support.config /Harness] # cp Test.Unix-PHP.config Test.config 3) 위복사한파일들을이용하여, SPECweb 옵션을변경할수있음. 4) Test.config 필수설정 CLIENTS = <client IP address> SIMULTANEOUS_SESSIONS = < 원하는값 > & 를이용하여, 원하는 workload양과순서조절가능. 예 > 100&500&200 : 100, 500, 200의순서로, Runtime동안 workload 할당 < 최소 >-최대 >x<step level> 을이용하여, 원하는 Step level단위로 workload 조절가능예 > 100-200x50 : 100, 150, 200 의순서로, Runtime동안 workload 할당 TEST_TYPE=SPECweb_< 원하는 workload< : 이후의내용은 Banking을기준으로함 -> SPECweb_Banking WEB_SERVER = <web server IP address> BESIM_SERVER = < Besim IP address> BESIM_PORT = 81 BESIM_INIT_SCRIPT = "/var/www/fcgi-bin/besim_fcgi.fcgi" # FCGI SMARTY_DIR = "/var/www/html/smarty-2.6.7/libs/" SMARTY_BANK_DIR = "/var/www/html/bank/" SMARTY_ECOMMERCE_DIR = "/var/www/html/ecommerce/" SMARTY_SUPPORT_DIR = "/var/www/html/support/" 5) SPECweb_Bankig.config 필수설정 IMG_PATH = "/bank/images" DYN_SCRIPT_PATH = "/bank/" PADDING_DIR = "/var/www/html/bank/dynamic_padding/" CHECK_IMAGE_DIR = "/var/www/html/bank/images/" 6) Client 동작 test Ping 을이용하여, Server, Besim 과의 network 연결상태확인 7) Client 및 Prime client 동작명령 ( terminal 2개필요 ) 7-1) client /Harness] # java -jar specwebclient.jar 7-2) Prime client /Harness] # java -jar specweb.jar 에러가발생한다면, Test.config 파일내의 DEBUG_LEVEL 에 10 을할당한다. 그후, Client 와 Prime client 를다시실행시키면, 상세한실행과정이출력된다. 이과정의 message 를통하 여에러의원인을비교적쉽게알아낼수있다. 5
SPECweb2005 구동 구동절차 1) Web server에서, Apache(httpd) 시작 ] # service httpd start 2) Besim 에서, Apahce(httpd) 시작 ] # service httpd start 3) Client 에서, Client 실행 /Harness] # java -jar specwebclient.jar 4) Client 에서, Prime client 실행 /Harness] # java -jar specweb.jar Tip 1) Test.config 주요변수설명 SIMULTANEOUS_SESSIONS : 동작시킬 thread 수, 높을수록더많은부하발생 TEST_TYPE=SPECweb_Banking : 'SPECweb_Banking.config' 파일을이용하여, Simulate THREAD_RAMPUP_SECONDS : SPECweb2005는 SIMULTANEOUS_SESSIONS값까지 thread수를끌어올린후, Simulation을시작한다. 이값은 thread를끌어올리는데걸리는시간이다. 이값이클수록서서히 thread를증가시켜최대값에이르고, 작을수록짧은급격히 thread를증가시켜최대값에이른다. THREAD_RAMPDOWN_SECONDS : TREAD_RAMPUP_SECONDS와반대되는값이다. DEBUG_LEVEL : Prim client 실행시, 출력되는정보의세부정도를결정하는변수. 클수록더상세함. RUN_SECONDS : 실제 Simulation 실행시간. 초단위. ITERATIONS : Simulation의반복수. 2) SPECweb_Banking.config 주요변수설명 THINK_TIME : request 를요청하는 interval. USE_SSL : SSL 을사용여부결정. SPECweb 에서제공하는문서 (SPECweb2005_Design.html) 참조. 발생할수있는오류 1) incorrec id password page 출력원인 : Besim이정상적으로설치되지않았을경우, 이러한현상발생. 해결책 : 위의 Besim 설치부분을참고하여, Besim 재설치 2) too many open files message 출력원인 : 제한된 file수로인해발생해결책 : ulimit를이용하여제한변경. ] # ulimit -a >> 정보출력 ] # ulimit -s [ 값 ] >> stack size 변경항상적용되기위해서, 사용된명령어를쉘스크립트에추가, /root/.bashrc 3) 'Exceeded allowed max thinktime ' message 출력원인 : workload의양이 server가감당할수없을정도로많을경우, 발생. 해결책 : Test.config에서, SIMULTANEOUS_SESSIONS값을줄이거나, SPECweb_Banking.config에서, THINK_TIME값을늘려준다. 6