v2.5.2
Giriş yap

NodeJS ile çoklu çekirdek kullanımı

kargasa1982
422 defa görüntülendi

Merhaba arkadaşlar. 32 çekirdekli Xenon işlemcili bir sunucu üzerinde nodejs ile proje hazırladım ve tek dosya olarak sorunsuz çalışıyor. Dosyamı pm2 start dosyadi.js şeklinde çalıştırıyorum. Amacım aynı anda birden fazla dosyayı çalıştırabilmek. Konuyu tam olarak anlatmam gerekirse;

pm2 start dosyaadi-1.js
pm2 start dosyaadi-2.js
pm2 start dosyaadi-3.js

şeklinde birbirinin aynı fakat farklı portlara sahip dosyaları çalıştırıyorum.

dışarıdan bu dosyalara işlem gönderdiğim zaman birinde işlem tamamlanmadan, diğerine geçmiyor. Yani benim birim zamanda yaptığım işlem sayısı yine aynı kalıyor. İşlemci ve Ram kullanımları yüksek değil, yani tavan değerlere çıkmıyor. Yaptığım bir işlem ortalama 40sn sürdüğü için ben 40 sn'de 3 veya daha fazla işlem yapmak istiyorum. Bunu nasıl gerçekleştirebilirim? Yardımlarınız için şimdiden teşekkürler.

h4ckdr0
700 gün önce

@kargasa1982 rica ederim...

Dinamik bilgileri çalışma işlemine göndermek için, Worker sınıfının postMessage() yöntemini kullanabilirsiniz. Bu yöntem, bir çalışma işlemine veri göndermenize olanak verir.
Örneğin:

const { Worker } = require('worker_threads');

const worker = new Worker('./myWorker.js');

// Dinamik bilgileri gönder
worker.postMessage({ data: 'dinamik veri' });

Bu örnekte, myWorker.js dosyasında çalışan çalışma işlemine data: 'dinamik veri' değerini gönderir. Çalışma işleminde bu değeri almak için, onmessage olayı işleyicisini kullanabilirsiniz:

// myWorker.js dosyası

process.on('message', (message) => {
  console.log(message); // { data: 'dinamik veri' }
});

Bu şekilde, worker_threads modülünü kullanarak dinamik bilgileri bir çalışma işlemine gönderebilirsiniz.

Not: worker_threads modülü, node.js'in --experimental-worker bileşeni ile birlikte kullanılır. Bu bileşen, node.js'in çalışma işlemlerini desteklemesine olanak verir.