인프런 커뮤니티 질문&답변

박성호님의 프로필 이미지
박성호

작성한 질문수

오라클 성능 분석과 인스턴스 튜닝 핵심 가이드

Swingbench TPS 값 관련하여 질문 드립니다.

작성

·

638

0

안녕하세요. 강의 잘들었습니다.

 

오라클 클라우드에서 Database를 생성하고 윈도우 VM에서 Swingbench를 설치하여 성능 테스트를 해보았는데요.

결과값이 생각했던 것과는 조금 달라서 질문 드립니다.

 

아래 Results Overview를 보시면 Average TPS 값이 3941.64로 표시되는데요.

테스트 결과는 30분동안 SOE_10G에 부하를 주었을때 값입니다.

 

전체 시간을 보면 4500TPS 값에 가까운 평균 값이 나와야할텐데, 중간중간 TPS가 측정되지 않는 구간이 있습니다.

이런 현상 때문에 데이터를 전체적으로 신뢰하긴 어려워 보입니다.

 

제가 테스트를 10번정도는 돌려봤는데 모두 동일하게 중간에 TPS가 빠지는 구간이 존재합니다.

데이터베이스 서버와 Swingbench가 설치된 서버는 모두 같은 VCN에 있구요. 네트워크 관점으로 ping을 해보면 빠지지 않습니다.

 

제가 Swingbench나 데이터베이스 설정에서 놓친 부분이 있을까요?

조언 부탁드리겠습니다.

 

답변 4

1

권 철민님의 프로필 이미지
권 철민
지식공유자

동시 접속 150에서는 DB에서 병목이 발생하거나 SwingBench 를 수행하는 PC에서도 이슈가 있을 수 있습니다.  

CHART를 보시면 아시겠지만, 4에서 150으로 늘려도 TPS가 선형적으로 증가하지 않습니다. 

150개의 동시 접속수는 꽤 큰수입니다.  일상적인 동시 접속 150개와 swingbench의 동시접속 150은 상당히 다른 수준입니다. 

Oracle Database Appliance X8-2-HA 결과는 DB가 최적화 된 상태에서 수행한 것입니다. 일반적으로 Oracle에서 발표하는 TPS자료는 상당한 수준으로 최적화가 된 상태에서의 수행 결과 입니다. 반대로 오라클 클라우드 DB는 생성후 최적화를 해주셔야 합니다. SwingBench를 수행하고, 강의 내용대로 AWR을 수행해서 어디가 병목인지 확인해 보시는 것도 좋을 것 같습니다. 

그리고 PC에서 150개의 thread(제 생각엔 thread가 아니라 process일수도)를 구동하는데 이들이 모두 접속 connection을 받아서 수행하려면 local pc에서도 상당한 부담일 수 있습니다.  위에 설명에서 CPU Core가 8 Core로 되어 있는데, 이게 client pc인지 db서버인지 불명확하군요.  150개의 동시 접속을 수행하려면 pc의 CPU 코어가 훨씬 커야 할 수도 있습니다.(16 Core 이상)

감사합니다. 

 

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

뭔가 주기적으로 cool down 되는 옵션이 설정되어 있나 보군요. 제가 이 옵션이 잠깐 생각이 안나서, 

지금 제 클라우드 서버에 오라클이 날라가서...  로컬 서버에 다시 설치한 뒤에 테스트 해보고 말씀 드리겠습니다. 설치에 시간이 걸리니, 오늘 설치 후 주말에 테스트 해보고 말씀드리겠습니다. 

감사합니다. 

박성호님의 프로필 이미지
박성호
질문자

빠른 피드백 감사드립니다. 글을 올리고나서 공지를 봤는데 코로나는 좀 괜찮아지셨길 바랍니다.

0

박성호님의 프로필 이미지
박성호
질문자

둘 다 0 입니다..^^;;

 

특히나 쿼리쪽은 I/O연산보다는 CPU연산을 확인하고싶어 0으로 수정하였습니다.

 

권 철민님의 프로필 이미지
권 철민
지식공유자

음, 그럼 DB쪽에 병목 일수도 있습니다. 동시 접속 숫자가 150으로 되어 있는데, 70정도로 줄여서 테스트 해보시겠습니까?

박성호님의 프로필 이미지
박성호
질문자

디폴트값인 4 user에서도 동일한 현상입니다. 추가적으로 dbcs의 코어는 4코어 8코어 둘다 해보았습니다.

권 철민님의 프로필 이미지
권 철민
지식공유자

4 User로 했는데도 동일한 현상이 나면 swingbench 이슈 일 수도 있겠군요. 하지만 제가 테스트 해보면 저렇게 TPS가 감소하는 구간이 나타나지 않습니다.

저정도 빠진다는 것은 Transaction cool down이 설정 되어 있다는 건데, 설정이 그렇게 되지 않은것은 확인하였으니, 그건 아닌것 같고, 다만 클라우드 설정상에 뭔가 네트웍 보안 설정 부분이 다르게 설정되어 있을 가능성도 있을 것 같습니다.  SwingBench는 오라클 내부에서도 많이 쓰이고, 전 세계적으로도 오랜 기간 검증된 부하 툴입니다. 버그나 내부적인 오류 이슈는 아닐것  같습니다. 

가능하시다면 로컬 서버나 다른 서버에 오라클을 설치하시고 다시 테스트 해보시라는 방법외에는 제가 드릴수 있는 답변이 없을 것 같아서 아쉽습니다.  

권 철민님의 프로필 이미지
권 철민
지식공유자

근데, 잠시만,

1. TPS 그래프가 지금 SwingBench에서 만든건가요? SwingBench UI에서 보지 못한 화면이라서요

2. 4 User로 했을 경우 동일한 현상이라는데, TPS는 작은데, 중간에 빠지는 경우가 경우가 있다는 건가요? 4 User로 했을 때 평균 TPS가 얼마가 나오나요? 

3. 그리고 왼쪽 패널에 가셔서 Output 페인에서 특정한 메시지가 나온게 있는지 확인 부탁드립니다. 

4. 왼쪽 메뉴에서 Configuration-> Connection Pooling 이  설정 되지 않아야 하는데, 혹 설정되었나요?

5. 강의에서 언급한 설정외에 뭔가 변경한 SwingBench 설정이 있나요?

박성호님의 프로필 이미지
박성호
질문자

1. Swingbench의 winbin 디렉터리안에 results2pdf로 xml을 변환한 화면입니다.
(스크린샷을 따로 남겨놓은게 없지만, Swingbench 화면에서도 동일하게 TPS는 빠집니다.)

2. 이 또한 남겨놓은 스크린샷은 없지만, 중간에 빠지는 경우는 동일했습니다.

제가 여러 케이스로 10회이상 테스트한 결과를 가지고 있는데

모든 TPS가 빠졌다고 생각했는데 자료를 다시 살펴보니 유일하게 한 번의 케이스에서 TPS가 빠지지 않았습니다.

이 케이스는 I/O연산에 대한 TPS를 측정하기 위해 Warehouse Query와 Warehouse Activitiy Query만 활성화 하여 부하 테스트를 한 케이스 입니다.

 

3. 특별하게 없었습니다.

4. 설정하지 않았습니다.

5. Load Ratio을 바꾼것 말고는 없습니다.

 

말씀하신 Transaction Cool Down 설정은 Inter delay가 0이면 설정 안된걸로 보시는건가요?

 

권 철민님의 프로필 이미지
권 철민
지식공유자

말씀하신 Transaction Cool Down 설정은 Inter delay가 0이면 설정 안된걸로 보시는건가요?

=> 네 맞습니다. 

2. 이 또한 남겨놓은 스크린샷은 없지만, 중간에 빠지는 경우는 동일했습니다.

=> 동시 접속 4로 해서 다시한번 테스트 부탁드립니다. 그때의 초당 TPS와 화면 캡처도 함께 부탁드립니다. 

 

아래는 설정하신 Load Ratio대로 제가 수행한 결과 입니다. 계속 모니터링했지만, 약간의 등락은 있지만, 갑자기 TPS가 빠지지는 않습니다.  동시 접속은 8 입니다. 4도 비슷합니다.

 

 

박성호님의 프로필 이미지
박성호
질문자

동시 접속 4로 10분간 부하를 줬더니 빠진게 없었습니다.

동시 접속 150로 10분간 부하를 줬더니 아래와 같이 일부 빠진 부분이 있습니다.

 

 

박성호님의 프로필 이미지
박성호
질문자

저의 테스트 목적은 오라클 클라우드 데이터베이스와 오라클 데이터베이스 어플라이언스의 성능을 비교하기 위함입니다.

아래 항목은 Oracle Database Appliance X8-2-HA 자료 일부분입니다.

(출처 : https://www.oracle.com/a/ocom/docs/engineered-systems/database-appliance/oda-x82ha-perf-wp-5972834.pdf)

동일한 쿼리 동일한 유저수로 측정하고자하였으나, 이런 현상이 발생하는 원인은 무엇일까요?

0

권 철민님의 프로필 이미지
권 철민
지식공유자

아래는 제 swingbench 작업 화면 입니다. TPS가 고르게 나오고 있습니다. 

그런데 TPS가 주기적으로 잘 안나올 때는 크게 두가지 인것 같습니다. 

1. 왼쪽 하단 메뉴에서 Inter delay 값을 0보다 크게 설정한 경우, 

2. 두번째는 중앙의 transaction에서 warehouse query와 warehouse activity query의 비중을 매우 높게 잡은 경우

특히 2번 경우일 확률이 더 큰데, 해당 트랙잭션은 대용량 쿼리이므로 TPS가 나오지 않습니다.  비중이 크게 잡혀 있지 않은지 확인 부탁 드립니다. 

 

1, 2번 모두 아니라면 다시 글 업데이트 부탁드립니다. 

 

박성호님의 프로필 이미지
박성호

작성한 질문수

질문하기