1 min read

Docker Performans Tunning (Mac OS)

Mac OS’da Docker kullanarak geliştirme yapan biri olarak son zamanlarda yoğun derecede performans sorunları yaşamaya başladım. İş öyle bir boyuta geldi ki, native platformda 2 ile 4 saniye süren HTTP Request’lerim, Docker environment’ım da 30 saniyeleri bulmaktaydı.

Hal böyle olunca bunun sebeplerini araştırmaya giriştim ve Docker dökümanlarında bununla ilgili bir yazısına rastladım. Yazıya buradan ulaşabilirsiniz.

Docker 17.04 CE Edge versiyonuyla birlikte Volume opsiyonu için iki adet yeni flag eklemesi gelmiş. Bunlar cached ve delegated.

Gelen bu iki yeni flag ile birlikte toplamda üç adet flag yer almakta.

  • consistent: Host ile Container arasında uyumluluğu en üst seviyeye çıkarır. Yani iki ortamda gerçekleştirdiğiniz yazma, silme, düzeltme gibi operasyonlar aynı görüme sahip olacaktır.
  • cached: Host üzerinde gerçekleştirilen değişiklerin, container üzerinde gözükmesinde gecikmelere neden olacaktır.
  • delegated: Container üzerinde gerçekleşen operasyonların, host üzerinde gözükmesinde gecikmelere neden olacaktır.

Bazı Ufak Notlar

  • delegated flag’i, container içerisinde gerçekleşen yazma operasyonlarının, hosta aktarılmasında gecikmelere neden olacağı için herhangi bir crash durumunda dosya kaybına neden olabilir.
  • cached flag’i, host üzerinden container içerisine gecikmeli aktarım gerçekleştireceği için aktif değişiklikleri test sırasında göremeyebilirsiniz.
  • consistent flag’i default olarak kullanılan seçenektir.

docker run ile kullanım

docker run -it -d -v ./app:/app:cached alpine 

cached parametresi /app dizini için kullandığım flag’i ifade etmektedir.

docker-compose ile kullanım

version: "3"
services:
  php:
    image: php:7.1-fpm
    ports:
      - "9000"
    volumes:
      - ./app:/var/www/app:cached

cached parametresi bağlanan volume için kullanılan flag’i ifade etmektedir.

Kaynaklar: