iToverDose/Yazılım· 11 MAYIS 2026 · 00:05

Docker + WSL 2'de Yavaş SonarQube Taramaları: Çözüm .wslconfig Ayarlarında

SonarQube Docker taramalarınız WSL 2 üzerinde yavaş mı ilerliyor? Docker masaüstü için ayarlanmamış varsayılan kaynaklar yüzünden CPU ve RAM kısıtıyla karşılaşabilirsiniz. İşte .wslconfig dosyasıyla nasıl optimize edilir.

DEV Community4 dk okuma0 Yorumlar

Windows üzerinde Docker ile çalışan SonarQube taramalarınızın neden bu kadar yavaş ilerlediğini hiç merak ettiniz mi? Ben de aynı sorunu yaşadığımda, çözümün aslında oldukça basit olduğunu fark ettim: WSL 2 sanal makinesinin kaynakları yetersizdi. Bu makalede, Docker Desktop’un arka planda nasıl çalıştığını, kaynak kısıtlamalarını nasıl tespit edeceğinizi ve bu sorunu birkaç satırlık yapılandırma ile nasıl çözeceğinizi adım adım anlatacağım.

Taramaların neden durduğunu anlamak: belirtiler neler?

Orta ölçekli bir kod deposunda SonarQube taraması çalıştırdığımda, sürecin ilk birkaç dakikasında ilerleme yavaşladı ve ardından tamamen durdu. Loglarda açıklayıcı bir "bellek yetersizliği" mesajı görmedim, ancak sistem genelde iyi çalışıyordu. Bu durum, Windows kaynaklarından değil, Docker’ın arka planda çalıştığı WSL 2 sanal makinesinden kaynaklanıyordu.

Kaynak kısıtlamalarını Docker’dan doğrulayın

Docker Desktop, Windows üzerinde bir WSL 2 sanal makinesi (docker-desktop) içinde çalışır. Bu makinenin sahip olduğu kaynaklar, tüm Docker konteynerleri için üst sınırı belirler. WSL 2’nin mevcut kaynaklarını sorgulamak için aşağıdaki komutları kullanabilirsiniz:

wsl -d docker-desktop -- nproc
wsl -d docker-desktop -- free -h

Benim sistemimde çıkan sonuçlar oldukça endişe vericiydi:

  • 1 CPU çekirdeği
  • 1 GB’tan az RAM
  • 4 GB swap alanı

Bu durum, Java tabanlı bir araç olan SonarQube’un analiz motorunun bile çalışabilmesi için yetersizdi. Özellikle bellek yoğun işlemler sırasında sistemin swap kullanımına geçmesi, performansı felç ediyordu.

Çözüm: .wslconfig dosyasını düzenleyin

WSL 2, sanal makine ayarlarını %UserProfile%\.wslconfig adlı bir dosyadan okur. Varsayılan olarak bu dosya mevcut değildir; siz oluşturmalısınız. Benim sistemimde kullandığım yapılandırma şu şekildeydi:

[wsl2]
memory=8GB
processors=4
swap=8GB

Bu üç satırlık ayar, Docker Desktop’un WSL 2 sanal makinesine 4 CPU çekirdeği, 8 GB RAM ve 8 GB swap alanı tahsis etmesini sağladı. Fakat dikkat edilmesi gereken bazı önemli noktalar var:

  • Bölüm başlığı `[wsl2]` olmalıdır — büyük/küçük harfe duyarlıdır.
  • memory ve swap değerleri birim içermek zorundadır (GB, MB vb.). Örneğin, swap=4 yazarsanız, bu 4 baytı temsil eder — 4 GB değil. Bu tuzağa düşmemek için dikkatli olun.
  • Eşitlik işaretinin (=) etrafında boşluk bırakmayın.
  • processors değeri bir tam sayı olmalıdır.

Değişiklikleri uygulamak için adımlar

  1. .wslconfig dosyasını C:\Users\<KullanıcıAdı>\.wslconfig yoluna kaydedin.
  2. PowerShell’de aşağıdaki komutu çalıştırarak WSL 2 sanal makinesini kapatın:
wsl --shutdown
  1. Docker Desktop’u sistem tepsisinden tamamen kapatın ve yeniden başlatın.

Microsoft’un uyarısı: Değişiklikleri uygulamadan önce, sanal makinenin tamamen kapanmasını sağlamak için birkaç saniye bekleyin. Bunu doğrulamak için şu komutu kullanabilirsiniz:

wsl --list --running

Eğer listede hiçbir şey görünmüyorsa, Docker Desktop’u güvenle yeniden başlatabilirsiniz.

Değişikliklerin etkisini doğrulama

Docker Desktop yeniden başlatıldıktan sonra, WSL 2 kaynaklarını tekrar kontrol edin:

PS> wsl -d docker-desktop -- nproc
4

PS> wsl -d docker-desktop -- free -h
total        used        free      shared  buff/cache   available
Mem:          7.8G        485.8M      6.6G        3.1M       697.7M      7.1G
Swap:         8.0G        0           8.0G

Sonuçlar, yaptığımız ayarlara tam olarak uyuyordu: 4 CPU çekirdeği, 7.8 GB kullanılabilir RAM (8 GB’ın biraz altında, sistem overhead’ı nedeniyle) ve 8 GB swap alanı. Sonrasında çalıştırdığım SonarQube taraması, normal süresinde tamamlandı.

İsteğe bağlı ek ayarlar: performansı optimize etmek

WSL 2, [wsl2] bölümünde daha fazla ayar sunar. SonarQube gibi bellek yoğun uygulamalar için aşağıdaki seçenekler faydalı olabilir:

[wsl2]
memory=8GB
processors=4
swap=8GB
vmIdleTimeout=60000
[experimental]
autoMemoryReclaim=gradual
sparseVhd=true
  • `vmIdleTimeout`: 60 saniye boyunca kullanılmayan sanal makineyi otomatik olarak kapatır. Bu sayede Docker kullanmadığınız zamanlarda 8 GB RAM’i boşa harcamamış olursunuz.
  • `autoMemoryReclaim=gradual`: Bellek kullanımındaki ani düşüşler yerine, yavaşça Windows’a geri verir. Bu, ani bellek serbest bırakmalarından kaynaklanabilecek performans darbelerini önler.
  • `sparseVhd=true`: WSL sanal disklerinin (VHD) sıkıştırılabilir olmasını sağlar. Disk içinde alan boşaltıldığında, fiziksel disk kullanımı da otomatik olarak azalır.

Sık yapılan hatalardan kaçınmak

Bu ayarları uygularken karşılaşabileceğiniz yaygın hatalardan bazıları şunlardır:

  • Tüm kaynakları tahsis etmeyin. Fiziksel RAM’in tamamını ya da tüm CPU çekirdeklerini Docker’a ayırmak, Windows’un kendi çalışmasını olumsuz etkileyebilir. Genellikle fiziksel RAM’in %75’i ve birkaç CPU çekirdeği yeterli olacaktır.
  • `pageReporting` geçerli bir ayar değildir. Eski blog yazılarında görülen bu ayar, Microsoft’un güncel belgelerinde yer almıyor. WSL, bilinmeyen ayarları görmezden gelir, bu yüzden dosya geçerli görünse de herhangi bir etkisi olmayacaktır.
  • Yol ifadelerinde geri eğik çizgileri kaçırmayın. Örneğin, swapFile ya da kernel için yol belirtirken C:\Temp\swap.vhdx şeklinde yazın, C:/Temp/swap.vhdx değil.
  • Docker Desktop’un `docker-desktop` sanal makinesine odaklanın. Kaynakları doğrulamak için wsl -d docker-desktop -- free -h komutunu kullanın, yalnızca wsl -- free -h komutunu değil. İkincisi, varsayılan Linux dağıtımınızın (örneğin Ubuntu) kaynaklarını sorgular ve ayrı bir sanal makinedir.

Özet: hızlı çözüm adımları

Docker Desktop’un WSL 2 üzerinde yavaş çalıştığını düşünüyorsanız, önce sanal makinenin kaynaklarını kontrol edin:

wsl -d docker-desktop -- nproc
wsl -d docker-desktop -- free -h

Eğer kaynaklar yetersizse, %UserProfile%\.wslconfig yoluna aşağıdaki içeriği ekleyin:

[wsl2]
memory=8GB
processors=4
swap=8GB

Ardından wsl --shutdown komutunu çalıştırın, Docker Desktop’u yeniden başlatın ve değişiklikleri doğrulayın. Artık SonarQube taramalarınızın normal sürede tamamlandığını göreceksiniz.

Bu basit ama etkili ayarlarla, Docker’ın Windows üzerindeki performansını önemli ölçüde artırabilirsiniz. Unutmayın: WSL 2’nin kaynaklarını doğru ayarlamak, sadece Docker değil, tüm konteyner tabanlı geliştirme süreçleriniz için kritik bir adımdır.

Yapay zeka özeti

SonarQube ve Docker taramalarınız WSL 2 üzerinde yavaş mı ilerliyor? .wslconfig dosyasıyla CPU, RAM ve swap ayarlarını optimize ederek performansı artırın.

Yorumlar

00
YORUM BIRAK
ID #YR0C79

0 / 1200 KARAKTER

İnsan doğrulaması

2 + 7 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.