보안/Network

CPS(Connection Per Second), TPS(Transaction Per Second)

realforce111 2016. 6. 15. 10:54

CPS (Connection Per Second)는 초당 TCP Connection을 생성할 수 있는 최대 개수이며, TPS (Transaction Per Second)는 초당 최대 처리 건수, 즉 초당 교환되는 데이터의 수치를 의미합니다. 보통 L4에서는 CPS라는 용어를 L7에서는 TPS라는 용어를 사용합니다.


일반적으로 클라이언트가 Load Balancer(L4)의 VIP로 접속하고, 이를 특정 서버로 분산한 후 다시 세션을 끊는 과정을 하나의 1 CPS로 봅니다. 어떤 장비에서 200,000 CPS를 지원한다고 한다면 초당 200,000 개의 커넥션을 동시에 처리한다고 보시면 됩니다.



커넥션이란 하나의 세션이 만들어지고 닫히는 순간까지를 이야기합니다. 보통 TCP 통신을 이야기할때 세션 TCP 3 Way-Handshake라고 이야기하는데, 기본적으로 열 때는 3개 닫힐 때는 3개 또는 4개의 세션을 사용합니다. 계측기마다 기준을 조금씩 다르겠지만 일반적으로 비슷하다고 생각하시면 됩니다. 보통은 닫힐 때 4 Way-Handshake라고 하니까 7개라고 했을 때 200,000 CPS라 하면 초당 200,000가 열리고 닫히기 때문에 200,000 x 7이 되어 14,000,000 패킷이 왔다 갔다 합니다.


요즘 나오는 로드밸런서들은 기본적으로 L7 기반의 동작을 지원하기기 때문에 당장 사용하지 않더라도 보통 L7 성능을 측정하고자 하는 경우가 많이 있습니다. 이때 대부분 트랜잭션(Transaction)이라는 용어를 사용합니다. RPS(Requests Per Second)라고도 하는 업체도 있기도 한데 아무래도 범용적인 용어가 L7 TPS가 아닐까 합니다.


TPS 성능을 측정할 때 하나의 Session에 몇 개의 트랜잭션을 넣느냐에 따라 성능은 크게 차이가 생기게 됩니다. 때문에 해외에서는 TPS를 측정할 때 하나의 Session에 1개의 트랜잭션을 넣는 기준으로 측정을 하고 이를 TPS 성능으로 소개하기도 합니다. 하지만 국내에서는 높은 수치를 강조하기 위해서 하나의 Session에 10개 또는 그 이상의 트랜잭션을 넣고 측정하기 때문에 제조사 별로 수치가 통일되지 못하고 있습니다.



L4 CPS와 L7 TPS의 차이를 생각해 보겠습니다. 앞에서 보았던 그림은 로드밸런서가 L4로 동작했을 때이고 이 그림은 L7으로 동작했을 때의 그림입니다. 그림처럼 로드밸런서 장비가 L7으로 동작할 때는 엄연한 차이를 보입니다. 로드밸런서가 L7으로 동작할 경우 L4 상위 레벨의 헤더 또는 데이터를 보고 동작을 하기 때문에 부하가 많을 수밖에 없습니다. L7으로 동작할 때 가장 큰 차이가 ‘GET’과 같은 L7 요청이 있을 때 서버로 세션을 연다는 점입니다. 그래서 세션을 열고 닫고 하는 문제가 L4로 동작할 때와는 달리 로드밸런서가 클라이언트와 직접 세션 셋업을 하고 서버와는 또다시 별도로 하게 됩니다. 그래서 보통 L7 장비들을 보면 L4 동작 대비 약 1/3의 성능 차이를 보입니다.


[출처] http://cafe.naver.com/loadbalancer