성능테스트 정리

chacha·2021년 1월 6일
0
  • 성능 지표를 정한다.
    • 기초적으로 TPS로 하지만, Business특성상 달라 질 수 있다.
    • 성능측정 대상 서버의 SPEC부분도 고민해볼 문제이다.
  • 시나리오를 정한다.
    • 성능테스트는 특정한 사용자의 행위를 기준으로 수행된다.
    • 사용자의 행위에 따라서 성능측정 대상 서버에 호출되는 API들을 수집한다.
    • 수집된 API들을 시나리오성으로 묶어서 가중치를 부여한다.
  • 부하 발생 시킬 방법을 정한다.
    • ngrinder기준으로 ngrinder를 설치 후 Agent를 통해서 부하를 발생시키고 TPS등을 자동으로 측정해준다.
    • ngrinder는 Process - Thread형태로 하나의 Process이하에 여러개의 Thread들이 수행되는 구조이다.
    • 그래서 Process수 * Thread수 = VUser(동시 사용자 수)로 볼 수 있고, 동시 사용자를 잘 정해서 수행해야 한다.
    • ngrinder를 제외한 툴에대해서는 Agent를 직접 구현(Vegetar등)하고 Jenkins의 multi job execute등을 활용해서 부하를 발생시킨다.
    • ngrinder는 실패 시 로그를 수집해주는데 기본적으로 Log수집을 전체 Agent에 하지는 않고 1개의 Agent에 대해서 한다.
  • 부하를 발생시키에 앞서서 APM, Logging등의 방법을 고려해야 한다.
    • APM툴이나 Profiling관련 툴들을 잘 설정할 수 있다면 부하 발생 요소를 찾는데 좋을듯
    • APM툴을 깔았다고 전체를 알 수 있는건 아니고, TPS등의 그래프의 특성을 잘 읽는게 중요하다.
  • 성능측정 판단하기
    • ramp up으로 TPS가 증가되다가 GC가 시작되는 시점에 갑자기 낮아진다.
    • 그래프가 튀는 형태로 불규칙 하다면, Agent가 메모리 부족으로 GC가 되는경우거나, Server가 이상한 경우이니 잘 판단해야한다.
    • 측정 후 어느곳에 부하가 발생하는지(VM들의 지표를 보고 판단) 어느 Function에서 오래 시간이 걸리는지(Profiling도구를 통해서)를 잘 판단해야한다.
profile
안녕하세요~ :)

2개의 댓글

comment-user-thumbnail
2021년 2월 18일

불뱀님이 셨군요.... 언제 많은 도움 감사합니다 ^^

1개의 답글