GitLab 성능 모니터링

Tier: Free, Premium, Ultimate Offering: Self-managed

GitLab은 GitLab 8.4부터 고유의 응용 프로그램 성능 측정 시스템 “GitLab Performance Monitoring”을 제공합니다. GitLab Performance Monitoring은 커뮤니티 및 엔터프라이즈 에디션 모두에서 사용할 수 있습니다.

본 소개 외에도 GitLab Performance Monitoring을 올바르게 이해하고 적절히 구성하기 위해 아래 문서를 숙지하는 것이 좋습니다:

GitLab Performance Monitoring 소개

GitLab Performance Monitoring을 사용하면 다음을 포함하여 다양한 통계를 측정할 수 있습니다: - 트랜잭션을 완료하는 데 걸린 시간(웹 요청 또는 Sidekiq 작업). - 실행된 SQL 쿼리와 HAML 뷰 렌더링에 소요된 시간. - (instrumented) 루비 메서드의 실행 소요 시간. - 루비 객체 할당 및 특정 객체 보존. - 프로세스의 메모리 사용량 및 열린 파일 디스크립터와 같은 시스템 통계. - 루비 가비지 컬렉션 통계.

메트릭 유형

두 가지 유형의 메트릭이 수집됩니다:

  1. 트랜잭션별 메트릭.
  2. 별도 스레드에서 정해진 간격으로 수집된 샘플 메트릭.

트랜잭션 메트릭

트랜잭션 메트릭은 단일 트랜잭션과 연결될 수 있는 메트릭입니다. 이에는 트랜잭션 기간, 실행된 SQL 쿼리의 시간 및 HAML 뷰 렌더링에 소요된 시간과 같은 통계가 포함됩니다. 이러한 메트릭은 처리된 모든 Rack 요청 및 Sidekiq 작업에 대해 수집됩니다.

샘플 메트릭

샘플 메트릭은 단일 트랜잭션과 연결될 수 없는 메트릭입니다. 가비지 컬렉션 통계 및 보존된 루비 객체와 같은 예시가 있습니다. 이러한 메트릭은 정기적인 간격으로 수집됩니다. 이 간격은 두 부분으로 이루어집니다:

  1. 사용자 정의 간격.
  2. 간격에 추가된 무작위 생성 오프셋으로, 동일한 오프셋이 연속으로 사용될 수 없습니다.

실제 간격은 정의된 간격의 절반과 절반 위로 어디에서든지 발생할 수 있습니다. 예를 들어, 사용자 정의 간격이 15초인 경우 실제 간격은 7.5에서 22.5 사이일 수 있습니다. 간격은 프로세스의 수명 동안 한 번 생성되고 재사용되는 대신 각 샘플링 실행마다 다시 생성됩니다.

사용자 정의 간격은 환경 변수를 통해 지정할 수 있습니다. 다음 환경 변수가 인식됩니다: - RUBY_SAMPLER_INTERVAL_SECONDS - DATABASE_SAMPLER_INTERVAL_SECONDS - ACTION_CABLE_SAMPLER_INTERVAL_SECONDS - PUMA_SAMPLER_INTERVAL_SECONDS - THREADS_SAMPLER_INTERVAL_SECONDS - GLOBAL_SEARCH_SAMPLER_INTERVAL_SECONDS