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

 

 

1. 목적

기존의 부하분산 알고리즘은 Apache bench를 이용했었지만, Apache bench는 패턴이 일정하기 때문에 실제 web의 상태와 많은 차이가 있다. 그래서 실제 web과 동일한 환경을 구축하기 위해 SPECWeb이라는 벤치마킹 툴을 이용한다. SPECWeb의 본래 기능은 말 그대로 web server의 벤치마킹을 목적으로 한다. , web server의 성능을 평가하는 도구인 셈이다. 하지만 우리는 이 벤치마킹 툴을 통해 실제 web 환경을 구현, 또는 구축을 하려고 한다. 그리고 개발하려는 에너지 기반 부하분산 알고리즘의 성능을 기존의 부하 분산 알고리즘의 성능과 비교하여 더 좋은 알고리즘을 개발하는데 목적이 있다.

2. SPECweb2005

SPECweb의 버전 중 2005버전을 사용한다. 이는 실제 환경과 같은 환경을 구현하기 위해 작업 부하 환경을 3가지(banking, ecommerce, support)로 디자인 되었다. 각 환경은 웹 서버의 설정에 따라 다양한 환경을 갖출 수 있다.

3. SPECweb2005의 구성

SPECweb2005는 클라이언트, Prime client, 웹 서버, BeSim 으로 구성된다.

각 구성요소의 간략한 설명은 다음과 같다.

Client

서버에 HTTP 요청을 보내고 서버에서 HTTP 응답을 받은 응용 프로그램이 실행된다.

Prime Client

다른 클라이언트들을 초기화하고 행동을 통제하며, 웹 서버 및 BeSim에 대하여 초기화 루틴을 가동시키고, 벤치마크 시험의 결과를 모아 저장하는 역할을 한다.

Web Server

하드웨어와 클라이언트가 요청한 요구를 클라이언트들로부터 정보를 수집하는 것이다.

BeSim

(Back-end Simulator)

웹 서버가 HTTP 응답을 완료하기 위해 필요로 하는 특정의 정보를 회수하기 위해 통신을 해야 하는 back-end 과정에 필요한 적용 서버를 에뮬레이트 하는데 필요하다. , Besim 타입의 웹 서버와 back-end 과정에 필요한 서버 사이의 통신을 에뮬레이트 하기 위해 존재한다.


SPECweb 웹 사이트 주소
http://www.spec.org/
 

New Post