0Pricing
Go Academy · Ders

Sağlık Denetimleri ve Üretim Ayarları

HEALTHCHECK, tini ve kapsayıcılarda sinyal işleme

Sağlık Denetimleri ve Üretim Ayarları, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Sağlık denetimi uç noktaları

Bir sağlık denetimi uç noktası, yük dengeleyicilerin ve orkestratörlerin hizmetin canlı olduğunu ve trafik sunmaya hazır olduğunu doğrulamasını sağlar. İki yaygın türü vardır: canlılık (çalışıyor mu?) ve hazır olma (isteklere yanıt verebilir mi?).

Canlılık uç noktası

Süreç canlıysa 200 OK döndürür. Sürecin çalışıyor olmasının yeterli olduğu, her zaman başarılı olan basit bir işleyici:

mux.HandleFunc("/healthz/live", func(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
})

Hazır olma uç noktası

Yalnızca hizmet hazır olduğunda 200 döndürür (veritabanı bağlı, önbellek ısınmış, geçişler tamamlanmış). Başlangıç sırasında veya hizmetin durumu kötüleştiğinde 503 döndürür:

mux.HandleFunc("/healthz/ready", func(w http.ResponseWriter, r *http.Request) {
    if err := db.PingContext(r.Context()); err != nil {
        w.WriteHeader(http.StatusServiceUnavailable); return
    }
    w.WriteHeader(http.StatusOK)
})

Kubernetes yoklamaları

Kubernetes Dağıtım tanımınızda canlılık ve hazır olma yoklamalarını yapılandırın:

livenessProbe:
  httpGet: { path: /healthz/live, port: 8080 }
  initialDelaySeconds: 5
  periodSeconds: 10
readinessProbe:
  httpGet: { path: /healthz/ready, port: 8080 }
  initialDelaySeconds: 3
  periodSeconds: 5

GOMAXPROCS ayarı

Kapsayıcılarda GOMAXPROCS, kapsayıcının CPU sınırı yerine ana makinenin CPU sayısını varsayılan olarak kullanır. cgroup sınırlarından doğru değeri ayarlamak için go.uber.org/automaxprocs kullanın.

import _ "go.uber.org/automaxprocs"

Bellek sınırları

Çöp toplayıcının OOM sonlandırıcısı devreye girmeden önce belleği daha agresif kullanabilmesi için GOMEMLIMIT'i (Go 1.19+) kapsayıcı bellek sınırına ayarlayın:

import "runtime/debug"
debug.SetMemoryLimit(512 * 1024 * 1024) // 512 MiB

Çöp toplama ayarı

Çöp toplama sıklığını denetlemek için GOGC'yi ayarlayın. Varsayılan değer 100'dür (öbek iki katına çıktığında çöp toplama yapılır). Daha düşük değerler, daha sık çöp toplama karşılığında bellek kullanımını azaltır; daha yüksek değerler, daha az çöp toplama karşılığında daha fazla bellek kullanır.

os.Setenv("GOGC", "200") // allow heap to grow 2× before GC

Bağlantı havuzu ayarı

Veritabanı bağlantı havuzu sınırlarını kapsayıcınızın kaynak sınırlarına ve veritabanının max_connections değerine uygun şekilde ayarlayın:

db.SetMaxOpenConns(25)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(5 * time.Minute)

Metrikleri dışa açma

Dahili verilerin dış istemcilere sızmasını önlemek için Prometheus metriklerini ana API bağlantı noktasından ayrı bir bağlantı noktasında dışa açın:

go func() {
    http.Handle("/metrics", promhttp.Handler())
    http.ListenAndServe(":9090", nil)
}()

Kubernetes'te kontrollü kapanma

Kapanma zaman aşımı için yeterli süre tanımak üzere pod tanımında terminationGracePeriodSeconds değerini ayarlayın. SIGTERM alındığında hazır olma yoklamasından hemen 503 döndürün.

Üretimde profil oluşturma

pprof'u kimlik doğrulamalı, herkese açık olmayan bir bağlantı noktasında etkinleştirin. Bunu asla herkese açık hâle getirmeyin — dahili durumu açığa çıkarır ve hizmetin kullanılabilirliğini engellemek için kullanılabilir.

Hızlı Kontrol

GOMAXPROCS neden ana makinenin CPU'larına göre değil, kapsayıcı CPU sınırlarına göre ayarlanmalıdır?

Özet: Sağlık Denetimleri ve Üretim Ayarları

Temel noktalar:

  • Canlılık: süreç canlı; Hazır olma: hizmet trafik sunabilir
  • automaxprocs, GOMAXPROCS değerini kapsayıcı CPU sınırlarına göre ayarlar
  • GOMEMLIMIT, OOM sonlandırmalarını önler; GOGC, çöp toplama sıklığını ayarlar
  • Metrikleri yalnızca dahili kullanıma açık ayrı bir bağlantı noktasında dışa açın

Sıkça Sorulan Sorular

“Sağlık Denetimleri ve Üretim Ayarları” dersi ücretsiz mi?

Evet — “Sağlık Denetimleri ve Üretim Ayarları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Sağlık Denetimleri ve Üretim Ayarları” dersinde ne öğreneceğim?

HEALTHCHECK, tini ve kapsayıcılarda sinyal işleme Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Sağlık Denetimleri ve Üretim Ayarları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Go için Çok Aşamalı Docker Derlemeleri
  2. Ortam Yapılandırması ve Gizli Bilgiler
  3. Yerel Geliştirme için Docker Compose
  4. Sağlık Denetimleri ve Üretim Ayarları
← Go Academy Sayfasına Dön