CI/CD kanalınızda ortalama çöp toplama duraklatma süresini azaltmak için şu adımları takip edebilirsiniz:
1. Çöp Toplama Ayarlarını Optimize Edin:
- Genç Nesil Boyutunu Artırın:- Çöp toplama sıklığını azaltmak için genç nesil sayısını artırmak.
- Bu, JVM bağımsız değişkeni `-Xmn` veya `-XX:NewRatio` ayarlanarak yapılabilir.
- Çöp Toplama Aralığını Ayarlayın:
- Duraklatma süresini azaltmak için çöp toplama aralığını ayarlayın.
- Bu, JVM bağımsız değişkeni `-Dsun.rmi.dgc.server.gcInterval` veya `-Dsun.rmi.dgc.client.gcInterval` ayarlanarak yapılabilir.
2. Çöp Toplamanın İzlenmesi ve Analiz Edilmesi:
- Çöp Toplama Profil Oluşturucularını kullanın:- Çöp toplamayı izlemek ve analiz etmek için JProfiler, YourKit veya JVisualVM gibi araçları kullanın.
- Bu araçlar bellek sızıntılarının belirlenmesine, nesne oluşturma hızlarının optimize edilmesine ve çöp toplama duraklama sürelerinin azaltılmasına yardımcı olabilir.
3. Nesne Oluşturma Hızlarını Optimize Edin:
- Nesne Oluşturmayı Azaltın:- Uygulamanızda nesnelerin oluşturulma hızını azaltın.
- Bu, kodunuzu daha az nesne oluşturacak şekilde optimize ederek veya önbellekleme mekanizmalarını kullanarak yapılabilir.
4. Eşzamanlı Çöp Toplama Kullanın:
- Eşzamanlı Çöp Toplama işlemini etkinleştirin:- Duraklatma sürelerini azaltmak için eşzamanlı çöp toplamayı etkinleştirin.
- Bu, JVM bağımsız değişkeni `-XX:+UseConcMarkSweepGC` ayarlanarak yapılabilir.
5. Bellek Kullanımını İzleyin ve Optimize Edin:
- Bellek Kullanımının İzlenmesi:- Bellek sızıntılarını belirlemek ve bellek kullanımını optimize etmek için bellek kullanımını izleyin.
- Bu, VisualVM veya GCeasy gibi araçlar kullanılarak yapılabilir.
6. Test Et ve İyileştir:
- Test Etme ve Ayarları İyileştirme:- En iyi performansı elde etmek için çöp toplama ayarlarınızı test edin ve iyileştirin.
- Bu, uygulamanızı yük altında çalıştırarak ve çöp toplama duraklama sürelerini izleyerek yapılabilir.
Bu adımları izleyerek CI/CD işlem hattınızdaki ortalama çöp toplama duraklama sürelerini azaltabilir ve verimli uygulama performansı sağlayabilirsiniz.
Alıntılar:[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