ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동시사용자와 부하 분석
    성능 이론 2020. 12. 14. 23:35

    일반적인 Web based system을 사용하는 사용자 용어에 대해 알아보자.

    아래와 같이 4가지 사용자 유형으로 구분할 수 있으며, 뜻을 잘 못 알고 사용하는 사례도 많으므로 의미를 정확하게 알고 사용할 필요가 있다. 이 중, 가장 흔히 들어본 사용자는 아마도 동시 사용자 (Concurrent user)일 것이다. 말 그대로 동시에 시스템을 사용 중인 사용자다. 그러나 시스템에 접속되어 있는 Connected user로 생각하는 이들도 많으므로 정확한 뜻을 살펴보고자 한다.

     

    사용자 유형

     

    Named user는 해당 시스템에 존재하는 모든 사용자이다. 즉, Named user 수는 DB에 존재하는 계정의 총 합이다. 이는 성능 관점에서 볼 때 그리 중요한 지표가 아니다. 왜냐하면 모든 사용자들이 그 시스템을 사용한다는 보장이 없기 때문이다. 사용자 계정만 많이 존재하고 실제로 시스템에 접속하여 부하를 일으키는 숫자는 아주 작은 경우가 많다.

     

    Connected user는 현재 시스템에 로그인되어 있는 사용자이다. 이 사용자 역시 부하 관점에서는 크게 유의미한 결과를 주지 않는다. 만일 접속만 해놓고 사용을 하고 있지 않다면 시스템 성능에 거의 영향을 주지 않기 때문이다.

     

    Concurrent user는 로그인되어 있는 사용자 중 현재 시스템을 사용하고 있는 사용자이다. 시스템을 사용하는 행위는 원하는 컨텐츠를 클릭하여 읽고 있거나, 게시판에 글을 쓰는 것 등이다. 이 중 시스템에 부하를 주는 액션은 뭔가를 클릭할 때, 글을 다 쓴 후 전송하기 버튼을 누를 때이다. 반대로 뭔가를 클릭 후 그 결과를 읽고 있거나, 새로운 글을 작성 중일 때에는 시스템에 부하가 가해지지 않는다.

     

    Active user는 Concurrent user 중 현재 시스템에 부하를 일으키고 있는 사용자이다. 예를 들면, 특정 시점을 기준으로 클릭을 하거나 전송하기 버튼을 누르는 사용자들의 총 합이다. 시스템 입장에서는 이 Active user 수가 중요하다. 왜냐하면 시스템에 지속적으로 Request를 보내는 사용자들이기 때문에 항상 부하를 발생시키고 있는 주체이다. 즉, 시스템 부하량을 결정짓는 직접적인 요인이 된다. 이 Active user는 성능 툴에서 Vuser 또는 Thread가 된다.

     

    Concurrent user vs. Active user

     

    구분

    설명

    총 사용자
    Named Users

    시스템으로부터 접근 허가를 받은 총 사용자

    접속 사용자
    Connected Users

    총사용자 중 현재 시스템에 로그인되어 있는 사용자

    비접속 사용자
    Unavailable Users

    총사용자 중 현재 시스템에 로그인되어 있지 않은 사용자

    동시 사용자
    Concurrent Users

    접속사용자 중 현재 시스템을 실제로 사용하고 있는 사용자로서 트랜잭션 발생 조건을 입력하고 있거나 결과물을 읽고 있는 사용자트랜잭션을 발생하고 결과를 기다리고 있는 사용자

    비동시 사용자
    Idle Users

    접속사용자 중 시스템을 실제로 사용하고 있지 않는 사용자

    부하 사용자
    Active Users

    동시사용자 중 트랜잭션을 발생하여 결과를 기다리고 있는 사용자

    비부하 사용자
    Inactive Users

    동시사용자 중 트랜잭션 발생 조건을 입력하고 있거나 결과를 읽고 있는 사용자

     

    A라는 시스템에 동시 사용자 수가 10,000명이 있고, B 시스템의 동시 사용자 수는 8,000명이라고 할 때, 어떤 시스템이 더 많은 부하를 받고 있는가? 다시 말해, 더 많은 처리량을 나타내는가?

    답은 모른다. 정확하게 말하면 동시 사용자 수가 많은 시스템이 항상 더 많은 처리량을 나타내지 않는다는 것이다. A 시스템의 사용자들이 컨텐츠를 조회할 때 B시스템 사용자들보다 인터벌이 길다면 어떨까? 즉, 동시 사용자 수가 많다 하더라도 시스템에 Request를 보내는 주기에 따라 결과가 달라질 수 있다는 것이다. 그래서 Active user 수가 중요한 것이다. 쉽게 말해, 클릭하는 비율이 훨씬 높으면 사용자 수가 적어도 이를 뛰어넘을 수 있기 때문이다. 그러므로 4가지 유형의 사용자 중 Named 보다는 Connected, Connected 보다는 Concurrent, Concurrent 보다는 Active user 수를 알 수록 더 정확한 부하 분석이 이루어지게 된다.

     

     

    동시 사용자

    접속되어 있는 사용자 중 특정 시점에 시스템을 사용하고 있는 동시 사용자 수는 상기의 그림과 같이 카운트될 수 있다. (빨간 점) 여기서 Active user 수는 동시 사용자 수에, 응답시간에 요청 주기 (Request interval)를 나눈 값을 곱하여 구할 수 있다. 또한, Little's law를 통해 시스템이 단위 시간당 처리하는 트랜잭션량을 구하면, 동시 사용자 수에 요청 주기를 나누는 것으로 가능해진다. 그러므로 동시 사용자 수를 알고 그 사용자들의 평균적인 사용 패턴, 즉, 요청 주기를 안다면 해당 시스템의 부하량, 즉, 목표 TPS를 계산할 수 있게 된다. (Little's law 참조, performance.tistory.com/3)

     

    사용자 수를 통한 부하량 계산

     

     

    '성능 이론' 카테고리의 다른 글

    처리량과 응답시간, 어느 것이 더 중요한가?  (4) 2020.12.16
    컴퓨터 시스템의 처리량 곡선  (0) 2020.12.15
    IOPS와 지연시간  (0) 2020.12.13
    TPS와 응답시간  (0) 2020.12.12
    Little's law  (0) 2020.12.11

    댓글

Designed by Tistory.