os/Linux

seige 부하테스트 및 모니터링

C/H 2015. 12. 29. 08:30

설치

# debian, ubuntu
sudo apt-get install siege
# Mac Brew
brew install siege
curl http://www.joedog.org/pub/siege/siege-latest.tar.gz -o siege-latest.tar.gz
tar xvfz siege-latest.tar.gz
cd siege-2.72
./configure
make
make install

siege를 활용해서 모니터링 및 부하 테스트

홈 디텍토리에 siege.conf 설정

siege.config 
New configuration template added to /home/andrew/.siegerc
Run siege -C to view the current settings in that file
siege -c1000 -t1M http://localhost:3000/socket.io
...
...
HTTP/1.1 200   0.00 secs:      21 bytes ==> GET  /socket.io

Lifting the server siege...      done.

Transactions:		        5329 hits
Availability:		       87.63 %
Elapsed time:		       29.73 secs
Data transferred:	        0.11 MB
Response time:		        0.00 secs
Transaction rate:	      179.25 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		        0.71
Successful transactions:        5329
Failed transactions:	         752
Longest transaction:	        0.04
Shortest transaction:	        0.00
 
FILE: /usr/local/var/siege.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.
[error] unable to create log file: /usr/local/var/siege.log: No such file or directory

옵션

  • -c : 동시 접속자 수
  • -r : 반복 횟수
  • -d : 각 사용자 요청 사이의 시간지연 0~10
  • -d : 각각 요청의 결과를 보여준다.

결과 설명

  • Transactions : 트랜젝션, 서버 히트 수. 동접 [-c25], 반복 [-r10] 이라면 트랜젝션은 250이 된다. 예상되는 히트 수보다 더 많이 나올 수 있다. siege는 리다이렉션이나 인증문제로 2개의 히트를 하나로 계산하지 않으며 이는 HTTP사용을 따르는 브라우저 동작을 모방한 것이다.
  • Availability : 서버의 소켓연결이 성공한 백분율. 성공 횟수/연결시도 횟수*100 ( 400, 500 에러 제외)
  • Elapsed time : 호출에서 트랜젝션 완료까지 시간
  • Data transferred : 헤더를 포함한 트랜젝션 데이터 용량
  • Response time : 평균 응답시간
  • Transaction rate : 시간당 트랜젝션 수
  • Throughput : 시간당 데이터 용량
  • Concurrency : 동시연결 수, 서버성능이 감소하면 숫자는 커진다.
  • Successful transactions : 트랜젝션 성공 횟수. 리턴코드 <400을 응답으로 받은 트랜젝션
  • Failed transactions : <트랜젝션 실패 횟수, 리턴코드 >400을 응답으로 받은 트랜젝션
  • Longest transaction : 단일(하나)의 트랜젝션중에서 가장 긴 시간
  • Shortest transaction : 단일(하나)의 트랜젝션중 가장 짧은 시간

2 이상 사이트 속도 확인

vim urls.txt
http://www.mywebsite.com/about-us/
http://www.mywebsite.com/contact-us/
siege -v -c10 --reps=once -d5 -f urls.txt 

HTML 페이지 내의 css, js 자원을 포함한 테스트

urls.txt에 해당하는 모든 자원의 URL을 추가한 뒤 테스트 진행하면 된다.

sproxy

Siege 제작자 Jeffrey Fulmer가 siege 와 같이 사용 할 수 있는 매우 간단한 프록시 프로그램 sproxy를 오픈했다.
프록시에 연결하는 웹사이트의 속도를 테스트한다.

curl http://www.joedog.org/pub/sproxy/sproxy-latest.tar.gz -o sproxy-latest.tar.gz
tar xvfz sproxy-latest.tar.gz
cd sproxy-1.02/
./configure
make
sudo make install

설치 후 한번은 proxy 설정을 해야한다.
Preferences > Advanced > Network 'settings' 버튼
수동(Manual) 프록시 구성을 선택하고, 127.0.0.1:9001 입력

# sproxy 실행
sproxy
SPROXY v1.02 listening on port 9001
...appending HTTP requests to: /home/username/urls.txt # 이 파일에 저장된다.
...default connection timeout: 120 seconds
# 브라우저에서 해당 URL을 Access한다.
# 중지
^C

/home/username/urls.txt 에 js, css, image를 확인한다. 구글분석기는 제거한다.
siege -c1 --reps=once -f urls.txt 으로 테스트한다.

bash로 사이트 확인

#! /bin/bash
echo 'START'
echo `date +%Y-%m-%d\ %H:%M:%S`

while [ : ]
do
	echo `date +%Y-%m-%d\ %H:%M:%S`
	`wget https://localhost/socket.io`

	sleep 5s
done
반응형

'os > Linux' 카테고리의 다른 글

CentOS yum epel 저장소 에러  (0) 2016.06.03
CentOs "No package htop available."  (0) 2016.01.04
bashrc  (0) 2015.12.21
CentOS 6.7에서 yum install nodejs 에러  (4) 2015.09.18
CentOS Minimal 설치 후 네트워크 잡기  (0) 2015.09.15