GitLab 성능 모니터링
GitLab은 GitLab 8.4부터 고유의 응용 프로그램 성능 측정 시스템 “GitLab Performance Monitoring”을 제공합니다. GitLab Performance Monitoring은 커뮤니티 및 엔터프라이즈 에디션 모두에서 사용할 수 있습니다.
본 소개 외에도 GitLab Performance Monitoring을 올바르게 이해하고 적절히 구성하기 위해 아래 문서를 숙지하는 것이 좋습니다:
GitLab Performance Monitoring 소개
GitLab Performance Monitoring을 사용하면 다음을 포함하여 다양한 통계를 측정할 수 있습니다: - 트랜잭션을 완료하는 데 걸린 시간(웹 요청 또는 Sidekiq 작업). - 실행된 SQL 쿼리와 HAML 뷰 렌더링에 소요된 시간. - (instrumented) 루비 메서드의 실행 소요 시간. - 루비 객체 할당 및 특정 객체 보존. - 프로세스의 메모리 사용량 및 열린 파일 디스크립터와 같은 시스템 통계. - 루비 가비지 컬렉션 통계.
메트릭 유형
두 가지 유형의 메트릭이 수집됩니다:
- 트랜잭션별 메트릭.
- 별도 스레드에서 정해진 간격으로 수집된 샘플 메트릭.
트랜잭션 메트릭
트랜잭션 메트릭은 단일 트랜잭션과 연결될 수 있는 메트릭입니다. 이에는 트랜잭션 기간, 실행된 SQL 쿼리의 시간 및 HAML 뷰 렌더링에 소요된 시간과 같은 통계가 포함됩니다. 이러한 메트릭은 처리된 모든 Rack 요청 및 Sidekiq 작업에 대해 수집됩니다.
샘플 메트릭
샘플 메트릭은 단일 트랜잭션과 연결될 수 없는 메트릭입니다. 가비지 컬렉션 통계 및 보존된 루비 객체와 같은 예시가 있습니다. 이러한 메트릭은 정기적인 간격으로 수집됩니다. 이 간격은 두 부분으로 이루어집니다:
- 사용자 정의 간격.
- 간격에 추가된 무작위 생성 오프셋으로, 동일한 오프셋이 연속으로 사용될 수 없습니다.
실제 간격은 정의된 간격의 절반과 절반 위로 어디에서든지 발생할 수 있습니다. 예를 들어, 사용자 정의 간격이 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