본문 바로가기
개발

[AWS] Scale Up - 스트레스 테스트

by 마스터누누 2017. 5. 13.
728x90
반응형

Scale Up




컴퓨터를 사용하는데 있어서 컴퓨터에 대한 수요,

예를들어 웹사이트를 운영 하는데 사용자가 늘어나거나 줄어듦에 따라 

대응 하는 방법중 하나가 Scale Up이다.


이때 수요가 늘어날 때 컴퓨터를 업그레이드 시키는 것이 Scale Up이다.

컴퓨터가 느려지면 더 좋은 컴퓨터를 사는것과 비슷한 전략이다.


이를 실험하기 위해 컴퓨터 2대가 필요하다

1대는 공격(사용자), 1대는 수비(서버)의 역할을 가지고 진행 해야 하기 때문이다.





컴퓨터에 걸리는 부하를 스트레스라고 하는데,

웹서버는 성능이 좋기 때문에 스트레스가 증가해도 성능이 떨어지지 않는다.

그러나 웹 애플리케이션(데이터 베이스 등)을 설치하면 규모가 늘어나서 성능이 많이 떨어진다.

즉, 서버가 무거워 지는 것이다.


이를 기반으로, 시뮬레이션을 위해 워드 프레스를 실험적으로 수비 쪽에 설치를 한다.

따라서 수비 쪽 컴퓨터는 Market Place에서 워드프레스 이미지를 선택해서 설치 한다.


공격 쪽 컴퓨터는 직접 인스턴스를 만든다.

OS는 우분투로 설정하고 나머지는 모두 Default 값으로 설정하여 인스턴스를 만든다.


위의 화면에서 wp가 수비, user가 공격 인스턴스이다.





1
2
sudo apt-get update
sudo apt-get apache2-utils
cs

인스턴스 세팅이 끝났으면 터미널을 통해 ssh로 공격 인스턴스로 접속한다.

여기서 top 명령어를 입력하면 현재 프로세스의 상태와 CPU 점유율을 실시간으로 확인할 수 있다.


그리고 탭을 하나 더 만들어서 수비 인스턴스로 접속한다.

그리고 위의 명령어를 입력해서 아파치의 유틸 프로그램들을 깔아준다.


apache2-utils는 아파치의 유틸 프로그램으로써, 웹서버에 사용되는 프로그램들을 모아놓은 것이다.

이 중 우리가 사용할 것은 ab이다.

명령창에 ab라고 치고 엔터를 누르면 명령어에대한 설명이 나온다.






위의 화면이 ab에 대한 메뉴얼이다.

우선 첫번째 request는 어떤 웹 서버에 몇번의 접속을 시도하는지에 대한 설정이다.

두번째 concurrency는 동시에 몇번의 접속을 시도하는지에 대한 설정이다.


만약 request가 100이고 concurrency가 1이면 순차적으로 접속하는것이며

request가 100이고 concurrency가 10이면 10명이 동시에 접속하는 것을 뜻한다.


ab -[option] "서버 경로"

따라서 이 명령어를 통해 스트레스 테스트가 가능하다





1
ab -n 400 -c 1 "경로"
cs


먼저 요청이 400명이고 동시접속이 1인 상황에 대한 테스트를 진행한다.

위의 명령어로 수비 인스턴스에 부하를 걸어주자






왼쪽이 공격측, 오른쪽이 수비측 터미널 화면이다.

이때 공격측은 리퀘스트의 완료가 될 때마다 신호를 보내준다.

수비 측은 top 명령어를 통해 프로세스를 모니터링하는데, CPU 점유율이 많은 프로세스가 상위에 랭크된다.






모든 리퀘스트가 완료되면 공격 측에 다음과 같은 완료 메세지가 뜨게 된다.


1) Time taken for tests : 총 소요시간

2) Failed requests :  실패한 건 수(서버가 제대로된 자료를 못보내줄 때)

3) Requests per second : 초당 처리시간(현재는 초당 28건의 응답을 줄 수 있다는 것이다.)

4) Time per request : 개인 당 처리 속도(개별 접속들의 응답 평균)






400개의 리퀘스트에 대한 동시접속을 늘리면 처리 속도가 점점 느려지게 된다.

사용자는 이에 대한 불편함을 느끼고 서비스를 사용하지 않게 되는데,

서버에서 반드시 이를 처리해 줘야한다.


이때 첫번째로 사용할수 있는 처리 방법이 Scale Up이다.



출처 : 생활코딩, 아마존 웹 서비스

반응형

'개발' 카테고리의 다른 글

[AWS] Scale Up - 인스턴스 교체  (0) 2017.05.13
[AWS] Scale Up - Elastic IP  (0) 2017.05.13
[AWS] Scalability  (0) 2017.05.13
[AWS] EC2 Marketplace (wordpress)  (0) 2017.05.13
[AWS] EC2 리눅스에서 웹서버 사용하기  (0) 2017.05.13

댓글