ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HCI로 가상화 전환 후 VM 성능 이슈
    성능 이슈 2020. 12. 20. 23:21

    물리 서버 환경에서 신규 구축한 HCI (Hyper Converged Infrastructure)로 업무 이관 후 서비스 오픈 시, SQL Server VM의 CPU가 100%까지 사용되는 이슈에 대해 공유한다.

     

     

    시스템 환경

    • 가상화 : VMware vSphere 6.7
    • 노드 자원 : Gold 6242 x 2ea (16C, 2.8GHz), 192GB Memory, Hyperthreading On
    • VM 자원 : 24vCPU (12vCPU x 2ea), 12GB Memory

     

    이상 현상

    • 업무 이관 직후 (10시)부터 17시까지 지속적으로 DB VM 및 해당 호스트에서 CPU 사용률이 100%까지 사용됨
    • 아래 서버 CPU 사진 참조 (일부 CPU는 평균값이 30~40% 수준이나, 대부분 Fully 사용 중)

    • DB VM의 CPU 사용률 참조 (5시 이후 업무 종료에 따라 하락함)

     

     


     

    아래와 같이 원인과 해결방안을 제시함

     

    원인 분석

    해당 현상만 보고 말씀드리는 것이니, 수많은 케이스 중 하나라고 생각해주시면 될 것 같습니다.
    본 메일에서 주목할 만한 점은, 5시 이후 현상이 해소되었다는 것입니다.
    즉, 업무가 끝났기 때문에 트랜잭션이 들어오지 않음으로써 없어진 것입니다.
    그렇다면 해당 트랜잭션들이 CPU 자원을 많이 쓰는 것으로 이해할 수 있습니다.

    그러면 왜 많이 쓰느냐인데.. 업무는 기존 피지컬 서버에서 그대로 넘어온 것이기 때문에 바뀐 게 없을 테고요.
    이런 상황에서 유추해볼 수 있는 것은, 기존 SQL들의 실행 계획(Execution Plan)이 변경되었을 가능성입니다.
    DBMS는 Optimizer가 SQL을 실행할 때 Cost가 가장 적게 드는 방향으로 최적의 플랜을 세우게 됩니다.
    이때, 인덱스의 유무나 데이터의 양 등에 따라 인덱스 스캔 여부/종류, 조인 방법 등을 결정하게 됩니다.
    그런데 시스템 환경이 바뀌게 되면 (성능이 다른 시스템이 되거나, 데이터 분포가 달라지거나..) Optimizer가
    판단하는 최적의 데이터 액세스 경로도 바뀌게 됩니다.

    예를 들면, 인덱스 스캔하던 것을 풀 테이블 스캔이 더 낫다고 판단할 수 있습니다. 또는 NL조인이 Hash 조인으로 바뀔 수도 있습니다. 왜냐면 Optimizer는 자기가 갖고 있는 나름의 정보로 판단하는데 이것이 100% 정확할 수는 없습니다. 그래서 사람이(Tuner) 개입해서 튜닝을 하게 되는 것입니다.
    어쨌든, 기존 환경에서 최적화되어 있던 SQL의 실행 계획이 새로운 시스템으로 옮겨가면서 변경되었을 가능성이 농후할 것으로 판단됩니다.

     

    해결 방안

    첫 번째, 기존 환경에서 통계정보를 백업받아서 새로운 환경에 적용해주는 것이 제일 간단하고 빠릅니다.
    두 번째는, 새로운 환경에서 통계정보를 재생성하는 것입니다. 기존 시스템에서 마지막으로 Analyze 한 시점이
    언제인지를 체크해봐야 하겠습니다. 오래되었을수록 여러 가지 DB 정보의 변동 가능성이 높으므로 통계정보 재생성이 필요하다고 할 수 있습니다. 이렇게, 통계정보 재생성만으로도 성능 개선이 크게 이루어지는 경우도 많으므로 쉽게 접근 가능한 방법입니다.
    마지막으로는, 세부적인 쿼리 튜닝 작업이 뒤따라야 할 것입니다. (자주 실행되는 메인 쿼리 중 일부만 해결해도 증상은 크게 개선될 수 있으므로, 나머지 업무 영향도가 낮은 쿼리들은 시간을 두고 천천히 진행해도 됩니다.)

    모든 작업은 트랜잭션량이나 업무 부하, 데이터량 등을 감안하여 가능한 한 비즈니스 영향이 덜한 시간대를
    고려해야 할 것입니다.

     

     

    이후 경과

    상기와 같이 가이드 후 고객 확인 결과, 서비스는 원래 환경으로 돌아갈 예정이며, 이른 시간 내 HCI에서의 운영을 위해 가이드한 내용과 같은 이유로 MS 엔지니어 지원을 받기로 하였다고 한다.

     

     

    댓글

Designed by Tistory.