Node.js Performans Optimizasyonu
- 16
- (1)
- (5)
- 31 Oca 2025
Node.js, ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmek için popüler bir JavaScript çalıştırma ortamıdır. Ancak, verimli bir Node.js uygulaması oluşturmak için bazı performans optimizasyonları uygulanmalıdır. Bu makalede, Node.js uygulamalarının performansını artırmak için en iyi teknikleri inceleyeceğiz.
Event Loop'u ve Asenkron Programlamayı Anlamak
Node.js tek iş parçacıklı bir çalışma modeline sahiptir ve olay döngüsü (event loop) üzerinden asenkron işlemleri yönetir. Performansı artırmak için:
- Bloklayıcı (blocking) işlemlerden kaçının.
- Asenkron API'leri kullanın (örneğin, fs.promises modülü).
- Heavy CPU işlemleri için Worker Threads veya dış servisler kullanın.
Örnek asenkron dosya okuma:
const fs = require('fs/promises');
async function dosyaOku() {
try {
const veri = await fs.readFile('veri.txt', 'utf8');
console.log(veri);
} catch (err) {
console.error('Hata:', err);
}
}
dosyaOku();
Gereksiz İşlemleri Minimize Etme
- Gereksiz işlemleri kaldırın.
- Verileri önbelleğe alın.
- Gereksiz JSON.parse ve JSON.stringify işlemlerinden kaçının.
Önbellekleme örneği:
const NodeCache = require('node-cache');
const cache = new NodeCache({ stdTTL: 100 });
function veriGetir(id) {
let veri = cache.get(id);
if (veri) {
return Promise.resolve(veri);
}
return fetchFromDatabase(id).then((sonuc) => {
cache.set(id, sonuc);
return sonuc;
});
}
Middleware ve Gereksiz Modüllerden Kaçınma
Express gibi framework'lerde, gereksiz middleware kullanımından kaçının:
const express = require('express');
const app = express();
// Gereksiz middleware kullanmayın
// app.use(slowMiddleware);
app.get('/', (req, res) => {
res.send('Merhaba Dünya!');
});
app.listen(3000, () => console.log('Sunucu 3000 portunda çalışıyor'));
Veritabanı Performansını Artırma
- Bağlantıları yeniden kullanın (connection pooling).
- Indexleme kullanarak sorguları hızlandırın.
- Gereksiz veritabanı sorgularından kaçının.
Örnek MongoDB bağlantısı:
const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
async function veriGetir() {
try {
await client.connect();
const db = client.db('ornekDB');
const sonuc = await db.collection('veriler').findOne({ id: 1 });
console.log(sonuc);
} finally {
await client.close();
}
}
veriGetir();
Gzip ve HTTP/2 Kullanımı
Sunucu performansını artırmak için gzip sıkıştırması ve HTTP/2 kullanabilirsiniz:
const express = require('express');
const compression = require('compression');
const app = express();
app.use(compression());
app.get('/', (req, res) => {
res.send('Sıkıştırılmış veri!');
});
app.listen(3000, () => console.log('Sunucu 3000 portunda çalışıyor'));
Cluster Modülü ile Çoklu İş Parçacığı Kullanımı
Node.js tek iş parçacıklı çalıştığı için Cluster modülü ile yükü birden fazla çekirdeğe dağıtabilirsiniz:
const cluster = require('cluster');
const os = require('os');
const express = require('express');
if (cluster.isMaster) {
const cpuSayisi = os.cpus().length;
for (let i = 0; i < cpuSayisi; i++) {
cluster.fork();
}
} else {
const app = express();
app.get('/', (req, res) => res.send('Çoklu İş Parçacıklı Sunucu!'));
app.listen(3000, () => console.log(`Worker ${process.pid} çalışıyor`));
}
Node.js performans optimizasyonu için:
- Asenkron programlama kullanın.
- Önbellekleme ve gzip gibi tekniklerden faydalanın.
- Gereksiz işlemleri kaldırarak verimli bir yapı oluşturun.
- Cluster modülü ve Worker Threads ile CPU kullanımını optimize edin.
Bu teknikleri uygulayarak Node.js uygulamalarınızın daha hızlı ve verimli çalışmasını sağlayabilirsiniz.