-
[네이버 클라우드 플랫폼] Load Balancer(4) - PM2 및 부하 테스트tutorial/네이버클라우드 플랫폼 2020. 11. 17. 16:33
해당 포스팅은 각 도구(라이브러리)의 사용방법보다는 테스트를 하기 위해 사용되었습니다.
따라서, 다소 설명이 부족할 수 있다는 점 양해 부탁드립니다.
전 포스팅에서 원격 서버에 프로젝트를 실행하고 브라우저를 통하여 접속해봤습니다.
하지만, 터미널을 닫고 브라우저를 새로 고침하면 페이지가 열어지지 않습니다.
PM2를 이용하여 백그라운드로 서버를 실행하고 로드밸런서를 설정하여 테스트를 진행해보겠습니다.* PM2
- pm2는 Node js에서 사용하는 프로세스 관리 도구 중 하나입니다.
무중단서비스나 모니터링, 클러스터, ecosystem.js 설정들을 통하여 쉽게 관리할 수 있도록 도와줍니다.
- 참고 : pm2.keymetrics.io/
설치 방법
- 원격 서버에서 테스트하기 때문에 원격 서버에 접속 후 설치하시길 바랍니다. )
npm install pm2@latest -g
실행 방법
- 실행할 파일 경로까지가서 입력하세요. (blog-load_balancer/app.js)
// pm2 start fileName.js pm2 start app.js
서버가 정상적으로 실행되었습니다.
브라우저를 통하여 자신의 ip 주소와 포트 번호를 입력하여 잘 작동하는지 확인해 봅시다.로그 확인하기
- pm2는 손쉽게 실시간 로그를 확인해 볼 수 있습니다.
// pm2 desc pm2의AppName pm2 desc app
서버에서 에러가 발생할 경우 error log path를 확인,
서버의 단순 로그를 확인 할 경우 out log path의 경로에 있는 파일을 확인해보시길 바랍니다.
실시간 로그확인하기
- 해당 명령어를 통하여 파일을 읽습니다.
// tail -f -n 100 파일경로 tail -f -n 100 /root/.pm2/logs/app-out.log
* 부하 테스트 Artillery
- Artillery를 사용해서 스트레스 테스트를 진행해보겠습니다.
공식 홈페이지를 보면 다양한 테스트 방법과 Datadog, StatsD, InfluxDB 와 함께 연동하여 사용이 가능합니다.
- 실무에서 테스트를 진행한다면 테스트 시나리오를 작성하고 그에 맞게 테스트를 진행해야 의미 있는 결과를 얻을 수 있습니다.- 참고 : artillery.io/
- 해당 테스트는 로컬에서 진행할 예정이며, 로컬 -> 원격 서버로 요청하겠습니다.
설치방법
npm install -g artillery
Artillery의 명령어
테스트 해보기
// 적은 요청 해보기 artillery quick --count 20 -n 30 http://115.85.183.218:3000/ // 많은 요청 해보기 artillery quick --count 1000 -n 300 http://115.85.183.218:3000/
해당 요청을 한 상태에서
브라우저를 통하여 원격 서버에 접속하게 되면 무한 로딩이 되거나 페이지가 뜨기까지 상당한 시간이 걸립니다.
즉, 일시적으로 많은 트래픽으로 인해서 서버가 감당할 수 없는 상태가 되어 원할히 서비스가 불가능해진 상태입니다.
네이버 클라우드 플랫폼에서 모니터링한 결과를 보면 CPU가 100%까지 올라간 걸 확인 할 수 있습니다.
현재 클라우드에서 사용하고 있는 서버보다 더 많은 성능을 요구하는 경우, 일일이 모니터링하여 그때마다 서버의 성능을 올려주는 건 거의 불가능한 일입니다.
다음 포스팅에서는 클라우드에서 제공하는 로드밸런서와 오토스케일링를 사용하여 보다 더 원활하게 서비스를 제공할 수 있도록 해보겠습니다.
감사합니다.
" 나는 해야한다
그러므로 나는 할 수 있다. "
칸트
'tutorial > 네이버클라우드 플랫폼' 카테고리의 다른 글
[네이버 클라우드 플랫폼] Load Balancer(5) - 로드밸런서 와 오토스케일링 ( Load Balancer and Auto Scaling ) (0) 2020.11.22 [네이버 클라우드 플랫폼] Load Balancer(3) - 프로젝트 생성 및 실행 (0) 2020.11.15 [네이버 클라우드 플랫폼] Load Balancer(2) - 서버 생성 및 원격접속 (0) 2020.11.14 [네이버 클라우드 플랫폼] Load Balancer(1) - 가용성과 확장성 (0) 2020.11.12