ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네이버 클라우드 플랫폼] 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

     

     

    status값이 'online'이라면 정상적으로 서버가 실행 된 상태입니다.

     

    서버가 정상적으로 실행되었습니다.
    브라우저를 통하여 자신의 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%까지 올라간 걸 확인 할 수 있습니다.

     

     

    현재 클라우드에서 사용하고 있는 서버보다 더 많은 성능을 요구하는 경우, 일일이 모니터링하여 그때마다 서버의 성능을 올려주는 건 거의 불가능한 일입니다.

    다음 포스팅에서는 클라우드에서 제공하는 로드밸런서와 오토스케일링를 사용하여 보다 더 원활하게 서비스를 제공할 수 있도록 해보겠습니다.

     

     

     

    감사합니다.

     

     

    " 나는 해야한다

    그러므로 나는 할 수 있다. "

     

    칸트 

     

     

Designed by Tistory.