Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon CI/CD 파이프라인에서 평균 가비지 수집 일시 중지 시간을 줄이는 방법


CI/CD 파이프라인에서 평균 가비지 수집 일시 중지 시간을 줄이는 방법


CI/CD 파이프라인에서 평균 가비지 수집 일시 중지 시간을 줄이려면 다음 단계를 따르세요.

1. 가비지 수집 설정 최적화:

- 젊은 세대 규모 증가:
- 가비지 수집 빈도를 줄이기 위해 Young Generation 크기를 늘립니다.
- 이는 JVM 인수 `-Xmn` 또는 `-XX:NewRatio`를 설정하여 수행할 수 있습니다.

- 가비지 수집 간격 조정:
- 가비지 수집 간격을 조정하여 일시 중지 시간을 줄입니다.
- 이는 JVM 인수 `-Dsun.rmi.dgc.server.gcInterval` 또는 `-Dsun.rmi.dgc.client.gcInterval`을 설정하여 수행할 수 있습니다.

2. 가비지 수집 모니터링 및 분석:

- 가비지 수집 프로파일러 사용:
- JProfiler, YourKit 또는 JVisualVM과 같은 도구를 사용하여 가비지 수집을 모니터링하고 분석합니다.
- 이러한 도구는 메모리 누수를 식별하고, 개체 생성 속도를 최적화하고, 가비지 수집 일시 중지 시간을 줄이는 데 도움이 될 수 있습니다.

3. 객체 생성 속도 최적화:

- 객체 생성 감소:
- 애플리케이션에서 객체가 생성되는 속도를 줄입니다.
- 코드를 최적화하여 더 적은 수의 객체를 생성하거나 캐싱 메커니즘을 사용하면 됩니다.

4. 동시 가비지 수집 사용:

- 동시 가비지 수집 활성화:
- 동시 가비지 수집을 활성화하여 일시 중지 시간을 줄입니다.
- 이는 JVM 인수 `-XX:+UseConcMarkSweepGC`를 설정하여 수행할 수 있습니다.

5. 메모리 활용도 모니터링 및 최적화:

- 메모리 활용도 모니터링:
- 메모리 사용률을 모니터링하여 메모리 누수를 식별하고 메모리 사용을 최적화합니다.
- VisualVM 또는 GCeasy와 같은 도구를 사용하여 수행할 수 있습니다.

6. 테스트 및 개선:

- 설정 테스트 및 개선:
- 최적의 성능을 얻으려면 가비지 수집 설정을 테스트하고 개선하세요.
- 이는 로드된 상태에서 애플리케이션을 실행하고 가비지 수집 일시 중지 시간을 모니터링하여 수행할 수 있습니다.

다음 단계를 수행하면 CI/CD 파이프라인에서 평균 가비지 수집 일시 중지 시간을 줄이고 효율적인 애플리케이션 성능을 보장할 수 있습니다.

인용:
[1] https://www.dynatrace.com/resources/ebooks/javabook/reduce-garbage-collection-pause-time/
[2] https://blog.heaphero.io/2018/07/10/micrometrics-for-ci-cd-pipeline/
[3] https://dzone.com/articles/how-to-reduce-long-gc-pause
[4] https://blog.gceasy.io/2018/07/10/micrometrics-for-ci-cd-pipeline/
[5] https://github.com/cypress-io/cypress/issues/8525