웹사이트 검색

Siege 벤치마킹 도구를 사용하여 웹 서버 부하 테스트


웹 사이트나 애플리케이션의 향후 성장을 계획하려면 스트레스를 받을 때 웹 서버가 처리할 수 있는 트래픽의 양을 아는 것이 필수적입니다. siege라는 도구를 사용하면 서버에서 부하 테스트를 실행하고 다양한 상황에서 시스템이 어떻게 작동하는지 확인할 수 있습니다.

siege를 사용하여 전송된 데이터 양, 응답 시간, 트랜잭션 속도, 처리량, 동시성 및 서버가 응답을 반환한 횟수를 평가할 수 있습니다. 이 도구에는 회귀, 인터넷 시뮬레이션, 무차별 공격 등 세 가지 모드가 작동할 수 있습니다.

중요: Siege는 자신이 소유한 서버 또는 테스트할 명시적인 권한이 있는 서버에 대해서만 실행해야 합니다. 일부 국가에서는 승인되지 않은 웹사이트에서 Siege를 사용하는 것이 범죄로 간주될 수 있습니다.

Linux에 Siege HTTP 부하 테스트 유틸리티 설치

Siege는 멀티 플랫폼이며 다음 명령을 사용하여 Ubuntu/DebianCentOS/RHEL 배포판에 설치할 수 있습니다.

Debin/UbuntuSiege를 설치하려면 다음을 실행하세요.

sudo apt install siege

CentOS/RHEL의 경우 다음을 사용하여 Siege를 설치하려면 저장소를 설치하고 활성화해야 합니다.

yum install epel-release
yum install siege

또는 소스에서 Siege를 구축할 수 있습니다. 이를 위해서는 빌드 필수 및 개발 패키지가 설치되어 있어야 합니다.

sudo apt install build-essential       #Ubuntu/Debian
yum groupinstall 'Development Tools'   #CentOS/RHEL

그런 다음 wget 명령을 사용하여 Siege를 다운로드하고 표시된 대로 소스에서 설치할 수 있습니다.

wget http://download.joedog.org/siege/siege-latest.tar.gz
tar -zxvf siege-latest.tar.gz
cd siege-*/
sudo ./configure --prefix=/usr/local --with-ssl=/usr/bin/openssl
sudo make && make install

Linux에서 Siege HTTP 부하 테스트 유틸리티 구성

설치가 완료되면 siege 구성 파일을 조정할 수 있습니다. /etc/siege/siegerc에 있습니다. 소스에서 패키지를 빌드하기로 결정한 경우 다음을 실행해야 합니다.

sudo siege.config

그러면 사용자 홈 ~/.siege/siege.confsiege.conf 파일이 생성됩니다.

파일 내용은 다음과 같아야 합니다. logfiletime 지시문의 주석 처리를 제거했습니다.

cat siegerc |egrep -v "^$|#"
샘플 출력
logfile = $(HOME)/var/log/siege.log
verbose = false
color = on
quiet = false
show-logfile = true
logging = false
gmethod = HEAD
parser = true
nofollow = ad.doubleclick.net
nofollow = pagead2.googlesyndication.com
nofollow = ads.pubsqrd.com
nofollow = ib.adnxs.com
limit = 255
protocol = HTTP/1.1
chunked = true
cache = false
connection = close
concurrent = 25
time = 1M
delay = 0.0
internet = false
benchmark = false
accept-encoding = gzip, deflate
url-escaping = true
unique = true

현재 구성에서는 siege가 1분 동안 25명의 동시 사용자를 모방합니다.

이제 포위 공격을 실행할 준비가 되었습니다.

Siege 벤치마킹 유틸리티로 웹사이트 로드 테스트

siege를 실행하는 것은 매우 쉽습니다. 다음과 같이 테스트하려는 웹사이트만 지정하면 됩니다.

siege example.com

가용성이 100%로 유지되고 실패한 연결이 없다면 시스템이 제대로 작동하고 문제가 없는 것입니다. 응답 시간도 주시해야 합니다.

여러 웹사이트에 대한 포위 공격 실행

파일에서 URL을 읽도록 siege를 설정하여 여러 URL을 테스트할 수 있습니다. /usr/local/etc/urls.txt의 URL을 다음과 같이 설명할 수 있습니다.

이제 siege에게 파일의 URL을 테스트하도록 지시하려면 다음과 같이 -f 옵션을 사용하세요.

siege -f /usr/local/etc/urls.txt

구성 파일에 설명된 것과 다른 설정을 시도하려는 경우 명령줄 옵션을 사용할 수도 있습니다.

  • -C – 자신만의 구성 파일을 지정합니다.
  • -q – siege의 출력을 억제합니다.
  • -g – GET, HTTP 헤더를 풀다운하고 트랜잭션을 표시합니다. 디버깅에 유용합니다.
  • -c – 동시 사용자 수, 기본값은 10입니다.
  • -r – 테스트를 실행할 횟수입니다.
  • -t – 테스트를 실행하는 데 걸리는 시간입니다. S, M 또는 H를 지정할 수 있습니다. 예: 10초 동안 –time=10S.
  • -d – 각 요청 전 무작위 지연입니다.
  • -b – 요청 사이에 지연이 없습니다.
  • -i – 사용자 시뮬레이션. 임의의 URL을 누르는 데 사용됩니다.
  • -f – 지정된 파일의 URL을 테스트합니다.
  • -l – 로그 파일.
  • -H – 요청할 헤더를 추가합니다.
  • -A – 사용자 에이전트를 지정합니다.
  • -T – 요청에 Content-Type을 설정합니다.
  • --no-parser – 파서 없음, HTML 페이지 파서를 끕니다.
  • --no-follow – HTTP 리디렉션을 따르지 않습니다.
결론

Siege는 부하가 높을 때 시스템 안정성을 측정하는 강력한 도구입니다. 웹 개발자는 사이트가 압박을 받을 때 코드를 테스트하는 데 사용할 수 있습니다. 평가 중에 테스트된 서버에 액세스할 수 없게 될 수 있으므로 항상 주의해서 테스트를 실행해야 합니다.