Yükleniyor...

Süreç Yönetimi

Node.js’de Süreç Yönetimi, uygulamanın ana iş parçacığını engellemeden sistem üzerinde yeni süreçler başlatma, izleme ve yönetme yeteneğini ifade eder. Node.js tek iş parçacıklı bir event-loop yapısına sahip olmasına rağmen, CPU yoğun görevler veya harici komutların çalıştırılması gerektiğinde süreç yönetimi kritik bir rol oynar. Doğru süreç yönetimi, uygulamanın performansını artırır, bellek sızıntılarını önler ve hataların etkin şekilde ele alınmasını sağlar.
Süreç yönetimi, özellikle arka planda çalışan görevler, paralel veri işleme veya sistem komutlarının çalıştırılması gerektiğinde kullanılır. Node.js’de bunu gerçekleştirirken önemli olan kavramlar; doğru sözdizimi kullanımı, veri yapıları, algoritmalar ve nesne yönelimli programlama (OOP) prensipleridir. Bu içerikte okuyucu, süreçlerin nasıl başlatılacağını, çıktıların ve hataların nasıl yönetileceğini, süreçlerin etkin şekilde nasıl sonlandırılacağını ve kaynakların nasıl optimize edileceğini öğrenir.
Yazılım geliştirme ve sistem mimarisi bağlamında, Süreç Yönetimi sayesinde ölçeklenebilir, dayanıklı ve yüksek performanslı uygulamalar geliştirmek mümkündür. Sunulan örnekler gerçek dünya senaryolarına uygun olarak hazırlanmış olup Node.js’in event-driven mimarisini ve asenkron işlem yapısını kullanarak süreçlerin güvenli ve verimli bir şekilde yönetilmesini gösterir.

Temel Örnek

text
TEXT Code
const { spawn } = require('child_process');

// Bir sistem komutunu çalıştırmak için yeni süreç oluştur
const süreç = spawn('ls', ['-la']);

süreç.stdout.on('data', (data) => {
console.log(`Çıktı: ${data}`);
});

süreç.stderr.on('data', (data) => {
console.error(`Hata: ${data}`);
});

süreç.on('close', (code) => {
console.log(`Süreç kodu: ${code}`);
});

Bu temel örnek, Node.js’in child_process modülü ve spawn fonksiyonu ile süreç yönetimini göstermektedir. Spawn, 'ls -la' komutunu çalıştıran yeni bir süreç başlatır ve ana iş parçacığını engellemez. stdout.on('data') sürecin standart çıktısını, stderr.on('data') hata çıktısını yakalar. close olayı, süreç tamamlandığında tetiklenir ve çıkış kodunu döner.
Bu kod, Node.js’in event-driven ve stream tabanlı mimarisini kullanarak bellek sızıntılarını önler ve asenkron hataların yönetimini sağlar. Ayrıca süreç yönetimi konusunda iyi bir temel oluşturur ve gerçek dünya uygulamalarında performans ile stabilite sağlar.

Pratik Örnek

text
TEXT Code
class SüreçYönetici {
constructor() {
this.süreçler = [];
}

süreçBaşlat(komut, args = []) {
const { spawn } = require('child_process');
const proc = spawn(komut, args);

proc.stdout.on('data', (data) => {
console.log(`[${komut}] Çıktı: ${data}`);
});

proc.stderr.on('data', (data) => {
console.error(`[${komut}] Hata: ${data}`);
});

proc.on('close', (code) => {
console.log(`[${komut}] Süreç tamamlandı, kod: ${code}`);
this.süreçler = this.süreçler.filter(p => p !== proc);
});

this.süreçler.push(proc);
return proc;
}

tümSüreçleriSonlandır() {
this.süreçler.forEach(proc => proc.kill());
this.süreçler = [];
}

}

// Birden fazla süreç yönetimi
const yönetici = new SüreçYönetici();
yönetici.süreçBaşlat('ls', ['-la']);
yönetici.süreçBaşlat('node', ['-v']);

// 5 saniye sonra tüm süreçleri sonlandır
setTimeout(() => {
yönetici.tümSüreçleriSonlandır();
console.log('Tüm süreçler sonlandırıldı.');
}, 5000);

Bu ileri seviye örnek, SüreçYönetici sınıfı aracılığıyla birden fazla süreç yönetimini göstermektedir. süreçler dizisi aktif süreçleri takip eder. süreçBaşlat metodu spawn ile yeni süreç oluşturur, stdout, stderr ve close olaylarını yönetir ve süreçleri diziye ekler. tümSüreçleriSonlandır metodu tüm süreçleri kapatır ve kaynakları temizler.
Bu yapı OOP prensiplerini uygular ve süreç yönetimini modüler, yeniden kullanılabilir hale getirir. Node.js’in event-driven ve stream tabanlı yapısı ile birleştiğinde paralel veri işleme ve yüksek performanslı uygulama geliştirmeyi mümkün kılar.

Node.js’de süreç yönetimi için en iyi uygulamalar arasında spawn kullanımı, stdout, stderr ve close olaylarının etkin yönetimi ve pasif süreçlerin sonlandırılması yer alır. Optimizasyon için stream kullanımı ve CPU yoğun işlemlerin ayrı süreçlerde çalıştırılması tavsiye edilir.
Yaygın hatalar arasında hataları göz ardı etmek, ağır görevleri ana iş parçacığında çalıştırmak ve süreçleri açık bırakmak bulunur. Hata ayıklamada çıktıların loglanması ve izleme araçları kullanımı önerilir. Güvenlik açısından, dış komutlar çalıştırılırken girişlerin doğrulanması önemlidir.

📊 Referans Tablosu

Node.js Element/Concept Description Usage Example
spawn Yeni, non-blocking süreç oluşturur const proc = spawn('ls', ['-la']);
stdout.on('data') Sürecin standart çıktısını yakalar proc.stdout.on('data', data => console.log(data));
stderr.on('data') Sürecin hata çıktısını yakalar proc.stderr.on('data', data => console.error(data));
close event Süreç tamamlandığında tetiklenir proc.on('close', code => console.log(code));
kill Süreci sonlandırır proc.kill();

Süreç Yönetimi Node.js’de paralel görevleri yürütmek, performansı artırmak ve kaynakları etkin şekilde kullanmak için kritik bir yetenektir. spawn, event-driven mimari, stream kullanımı ve OOP prensipleri, sağlam ve ölçeklenebilir sistemler oluşturmayı sağlar. İleri seviye konular olarak Cluster modülü, Worker Threads, performans optimizasyonları ve PM2 gibi süreç yönetim araçları incelenebilir. Pratik uygulamalar ve resmi dökümantasyon takibi öğrenmeyi pekiştirir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek