Version #

작성일

작성자

E-mail

설명

1.00

2011.3.3

김호연

hykim@q.ssu.ac.kr

첫 버전 작성함

1.01

2011.6.24

김호연

hykim@q.ssu.ac.kr

발생할 수 있는 오류내용 추가

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

첨부 : 1) 원본문서(hwp,pdf)
2) Besim httpd 환경설정 파일(httpd.conf_Besim)


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/' 디렉토리에 설치됨

2) ScriptApache(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_SESSIONSSection 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' 정독!

우리는 fcgiPHP를 사용할 것임

 

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 추가

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 "/">

 

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

Besimhttpd 환경설정 파일을 http://nclab.tistory.com/ 에서 다운로드 받을 수 있음

Client 설치

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를 통하

여 에러의 원인을 비교적 쉽게 알아낼 수 있다.

 

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 : SPECweb2005SIMULTANEOUS_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값을 늘려준다.

 

 

 

 

 

SPECweb2005 설치과정

2011. 1. 26. 12:11

1. 테스트 환경 구축

1-1. BeSim Web Server
환경 구축

(1) 구성

linux

종류, 버전은 상관없음. (fedora 14)

설치>

생략.

java sdk

버전 상관없음. (java-1.6.0_20)

설치>

root@BeSim$ yum install *java*

web server

종류, 버전 상관없음. (fedora 기본 웹서버 : apache 2.2)

설치>

기본적으로 설치되어 있음. (/etc/httpd/, /usr/lib/httpd/)

mod_fastcgi.so

Fedora에선 제공하지 않음. 소스를 받아 설치. (mod_fastcgi-2.4.6)

설치>

밑에서 설명. (4-2) mod_fastcgi.so 설치)

(2) SPECweb2005 소프트웨어 설치.

root@BeSim$ java -jar setup.jar -i console
선택
: 전체 설치 또는 BeSim 설치

(3) BeSim Web ServerPort 번호를 바꿈.

root@BeSim$ vi /etc/httpd/conf/httpd.conf
Listen 80 -> Listen 81 

(4) BeSim Web Server 구동을 위한 FastCGI 설치.

(4-1) fastCGI Compiling

root@BeSim$ cd /web2005-1.20/Besim/fcgi-2.4.0

root@BeSim$ ./configure --libdir=/lib
->configure 과정에서 상당한 에러가 나옴. 해결이 안 되는 것들은 무시.

root@BeSim$ make
-> make 과정에서 fcgio.cpp에서 에러가 나옴.

root@BeSim$ vi /web2005-1.20/Besim/fcgi-2.4.0/libfcgi/fcgio.cpp
-> #include <cstdio> 추가.

root@BeSim$ make install

root@BeSim$ mkdir /var/www/fcgi-bin

root@BeSim$ cd /web2005-1.20/Besim

root@BeSim$ make fcgi TARGET='clean all install' DEST=/var/www/fcgi-bin/

(4-2) mod_fastcgi.so 설치

root@BeSim$ yum install httpd-devel
다음 사이트에서 (http://www.fastcgi.com/dist/) 소스를 다운로드 받아 압축을 풀고, 압축을 푼 디렉토리에서 다음 명령어를 입력.

root@BeSim$ apxs -n mod_fastcgi -i -a -c mod_fastcgi.c fcgi_buf.c fcgi_config.c fcgi_pm.c fcgi_protocol.c fcgi_util.c

root@BeSim$ ls -l /usr/lib/httpd/mod_fastcgi.so
-> /usr/lib/httpd/modules/ 디렉토리에 mod_fastcgi.so가 있는지 확인.

root@BeSim$ mkdir -p /etc/httpd/fastcgi

root@BeSim$ chmod 777 /etc/httpd/fastcgi

(4-3) httpd.conf 파일 수정

root@BeSim$ vi /etc/httpd/conf/httpd.conf
1)
Dynamic Shared Object Support -> LoadModule fastcgi_module modules/mod_fastcgi.so
추가.

2)
ScriptAlias /cgi-bin/ -> ScriptAlias /fcgi-bin/ "/var/www/fcgi-bin/"
FastCgiIpcDir /etc/httpd/fastcgi

3)
<Directory "<CGIDIR>/fcgi-bin">
AllowOverride None
Options +ExecCGI -Includes
SetHandler fastcgi-script
Order allow,deny
Allow from all
</Directory>

4)
AddHandler fastcgi-script fcgi

1-2. Web Server 환경 구축

(1) 구성

linux

종류, 버전은 상관없음. (fedora 13)

설치>

생략.

java sdk

버전 상관없음. (java-1.6.0_20)

설치>

root@Web$ yum install *java*

web server

종류, 버전 상관없음. (fedora 기본 웹서버 : apache 2.2)

설치>

기본적으로 설치되어 있음. (/etc/httpd/, /usr/lib/httpd/)

PHP

버전 상관없음.

설치>

root@Web$ yum install *php*

mod_ssl

버전 상관없음.

설치>

root@Web$ yum install *ssl*

(2) SPECweb2005 소프트웨어 설치.

root@Web$ java -jar setup.jar -i console
선택 : Web Server 설치

(3) 스크립트 콘텐츠 복사.

root@Web$ cp -ar /SPECweb2005/scripts/php/* /var/www/
-> bank, ecommerce, support, Smarty-2.6.7 디렉토리

root@Web$ chmod 777 /bank /ecommerce /support /Smarty-2.6.7
-> 디렉토리 퍼미션 설정

root@Web$ chown -R nobody.nobody /bank /ecommerce /support /Smarty-2.6.7
-> 디렉토리 권한 변경 (root->nobody)

(4) php.ini 파일 수정.

root@Web$ vi /etc/config

1)
display_errors=On

2)
display_setup_errors=On

3)
error_reporting=E_ALL

(5) Wafgen 설정.

root@Web$ vi /web2005-1.20/wafgen/unix/<script_name>.rc
->각 스크립트의 .rc파일에서 수정. (script_name=bank, ecommerce, support)

1)
SIMULTANEOUS_SESSIONS=1 ->
숫자 조정. (1=10MB)

2)
DOCROOT=/var/www 
 

root@Web$ cd /web2005-1.20/wafgen

root@Web$ ./Wafgen unix/<script_name>.rc
-> 수정된 각 스크립트 .rc를 적용.

(6) httpd.conf 파일 수정

root@Web$ vi /etc/httpd/conf/httpd.conf
DocumentRoot=/var/www

1-3. 클라이언트 환경 구축

(1) Windows에서 설치

(1-1) JVM 설치

http://www.java.sun.com/

(1-2) SPECweb2005 소프트웨어 설치.

root@client$ java -jar setup.jar -i console
선택 : client/prime client 설치.

(2) Linux에서 설치

(2-1) Java sdk 설치

root@client$ yum install *java*

(2-2) SPECweb2005 소프트웨어 설치.

root@client$ java -jar setup.jar -i console
선택 : client/prime client 설치.

(3) .config 파일 수정

root@client$ cd /web2005-1.20/Harness/
-> Client 디렉토리로 이동

root@client$ cp SPECweb_<script_name>.Unix-PHP.config SPECweb_<script_name>.config
-> 각 스크립트 설정파일을 다른 이름으로 저장.

root@client$ vi SPECweb_<script_name>.config
-
> 다른 이름으로 저장된 각 스크립트 설정파일의 내용 수정.

PADDING_DIR = "/var/www/<script_name>/dynamic_padding/"

root@client$ cp Test.Unix-PHP.config Test.config
-> Test 설정파일을 다른 이름으로 저장.

root@client$ vi Test.config
-> 다른 이름으로 저장된 Test 설정파일의 내용 수정.

1)
WEB_SERVER = Web Server
IP 주소 

2)
BESIM_SEVER = BeSim Web Server
IP 주소

3)
BESIM_INIT_SCRIPT = "/var/www/fcgi-bin/besim_fcgi.fcgi"

4)
SMARTY_DIR = "/var/www/Smarty-2.6.7/libs/"
SMARTY_BANK_DIR = "/var/www/bank/"
SMARTY_ECOMMERCE_DIR = "/var/www/ecommerce/"
SMARTY_SUPPORT_DIR = "/var/www/support/" 

2. 실행

2-1. BeSim Web Server 실행

root@BeSim$ /etc/init.d/iptables stop
-> 방화벽 해제.

root@BeSim$ /etc/init.d/httpd start
-> 웹 서버 실행.

2-2. Web Server 실행

root@Web$ /etc/init.d/iptables stop
-> 방화벽 해제.

root@Web$ /etc/init.d/httpd start
-> 웹 서버 실행.

2-3. Client 실행

root@client$ /etc/init.d/iptables stop
-> 방화벽 해제.

root@Client$ java -jar SPECwebclient.jar

2-4. Prime Client 실행

root@prime$ /etc/init.d/iptables stop
-> 방화벽 해제.

root@Prime$ java -jar SPECweb.jar

 

 

New Post