Semakan Kesihatan dan Penalaan Pengeluaran
HEALTHCHECK, tini dan pengendalian isyarat dalam bekas
Semakan Kesihatan dan Penalaan Pengeluaran ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Titik akhir pemeriksaan kesihatan
Titik akhir pemeriksaan kesihatan membolehkan pengimbang beban dan alat orkestrasi mengesahkan bahawa perkhidmatan masih hidup dan sedia menerima trafik. Dua jenis yang biasa ialah keaktifan (adakah ia sedang berjalan?) dan kesediaan (bolehkah ia melayan permintaan?).
Titik akhir keaktifan
Mengembalikan 200 OK jika proses masih hidup. Pengendali mudah yang sentiasa berjaya — proses yang sedang berjalan sudah memadai:
mux.HandleFunc("/healthz/live", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
})Titik akhir kesediaan
Mengembalikan 200 hanya apabila perkhidmatan sedia (pangkalan data disambungkan, cache telah dipanaskan, migrasi selesai). Mengembalikan 503 semasa permulaan atau keadaan terjejas:
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)
})Probe Kubernetes
Konfigurasikan probe keaktifan dan kesediaan dalam spesifikasi Deployment Kubernetes anda:
livenessProbe:
httpGet: { path: /healthz/live, port: 8080 }
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet: { path: /healthz/ready, port: 8080 }
initialDelaySeconds: 3
periodSeconds: 5Pelarasan GOMAXPROCS
Dalam kontena, GOMAXPROCS ditetapkan secara lalai berdasarkan kiraan CPU hos, bukan had CPU kontena. Gunakan go.uber.org/automaxprocs untuk menetapkannya dengan betul berdasarkan had cgroup.
import _ "go.uber.org/automaxprocs"Had memori
Tetapkan GOMEMLIMIT (Go 1.19 dan versi lebih baharu) kepada had memori kontena supaya pengutip sampah boleh menggunakan memori dengan lebih agresif sebelum pembunuh OOM dicetuskan:
import "runtime/debug"
debug.SetMemoryLimit(512 * 1024 * 1024) // 512 MiBPelarasan pengutipan sampah
Tetapkan GOGC untuk mengawal kekerapan pengutipan sampah. Nilai lalai ialah 100 (pengutipan sampah berlaku apabila timbunan berganda). Nilai yang lebih rendah mengurangkan penggunaan memori dengan kos pengutipan sampah yang lebih kerap; nilai yang lebih tinggi menukar penggunaan memori yang lebih banyak dengan pengutipan sampah yang lebih jarang.
os.Setenv("GOGC", "200") // allow heap to grow 2× before GCPelarasan kumpulan sambungan
Tetapkan had kumpulan sambungan pangkalan data yang sesuai dengan had sumber kontena anda dan max_connections pangkalan data:
db.SetMaxOpenConns(25)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(5 * time.Minute)Pendedahan metrik
Dedahkan metrik Prometheus pada port berasingan, bukan port API utama, bagi mengelakkan data dalaman bocor kepada klien luaran:
go func() {
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":9090", nil)
}()Penutupan terkawal dalam Kubernetes
Tetapkan terminationGracePeriodSeconds dalam spesifikasi pod untuk memberikan masa yang mencukupi bagi tamat masa penutupan. Kembalikan 503 daripada probe kesediaan serta-merta apabila SIGTERM diterima.
Pemprofilan dalam pengeluaran
Dayakan pprof pada port bukan awam dengan pengesahan. Jangan sekali-kali dedahkannya kepada umum — ia mendedahkan keadaan dalaman dan boleh digunakan untuk melakukan DoS terhadap perkhidmatan.
Semakan pantas
Mengapakah GOMAXPROCS perlu ditetapkan berdasarkan had CPU kontena dan bukannya CPU hos?
Ringkasan: Pemeriksaan Kesihatan dan Pelarasan Pengeluaran
Perkara utama:
- Keaktifan: proses masih hidup; Kesediaan: perkhidmatan boleh melayan trafik
- automaxprocs menetapkan GOMAXPROCS berdasarkan had CPU kontena
- GOMEMLIMIT menghalang pembunuhan OOM; GOGC melaraskan kekerapan pengutipan sampah
- Dedahkan metrik pada port berasingan yang hanya boleh diakses secara dalaman
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Semakan Kesihatan dan Penalaan Pengeluaran” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Semakan Kesihatan dan Penalaan Pengeluaran”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Semakan Kesihatan dan Penalaan Pengeluaran”?
HEALTHCHECK, tini dan pengendalian isyarat dalam bekas Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Semakan Kesihatan dan Penalaan Pengeluaran” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Binaan Docker Berbilang Peringkat untuk Go
- Konfigurasi Persekitaran dan Rahsia
- Docker Compose untuk Pembangunan Tempatan
- Semakan Kesihatan dan Penalaan Pengeluaran