Node.Js Setınterval Ram Tüketimi
-
Merhabalar,
Bir konuda fikir alışverişi yapmak istiyorum.
Ortalama 1 saatte bir, bir sorgu yapıp veritabanına dönen sonucu eklemek istiyorum.
Bunun için başlattığım app.js dosyası içinde setInterval olarak fonksiyon eklesem bu ram veya cpuda performans kaybı yaşatır mı?
let say = 0; setInterval(function(){ ++say; console.log('ok --> ' + say); }, 10 * 60 * 1000);
Bu fonksiyon içinde sadece veritabanı işlemi yapılacak. -
Stackoverflow'da bir yorum gördüm. Sanırım bir performans kaybına sebep olmuyor. Kullanımın sıfır olduğunu yazmışlar.
https://stackoverflow.com/questions/12810622/nodejs-setinterval-bad-for-performance
-
Merhaba Hocam,
kaç tane Intervalin olacak ?
bildiğim kadarıyla kullanımın olmaması lazım built-in bir yapı olduğundan.
Benimde bir sorum var hocam nanoSaniyelere yakın çalışması gereken bir yapım var bunu şuan While(true) ile yapıyorum max performans veriyor diye düşünüyorum alternatif bir önerin var mı ?
-
db ye bir şeyler eklediğinde yada güncellediğinde frontende haber versen daha kolay ve anlık olabilir.
websocket vs gözünü korkutuyor olabilir lakin şunu kullanabilirsin. bedava limitleri çok yüksek ve kullanması baya kolay. 2 satır kodla hallediyosun: pusher.com
-
yolbulucu bunu yazdı
db ye bir şeyler eklediğinde yada güncellediğinde frontende haber versen daha kolay ve anlık olabilir.
websocket vs gözünü korkutuyor olabilir lakin şunu kullanabilirsin. bedava limitleri çok yüksek ve kullanması baya kolay. 2 satır kodla hallediyosun: pusher.com
Sorgulayıp veritabanına ekleyeceğim şeyler anlık sunucunun bilgileri hocam. Frontend tarafında falan görmek istediğim veriler değil.
Yapmak istediğim aslında cron. Belli saatlerde sunucunun değerleri gerekiyor.
-
Hocam cron için setInterval'i kullanma. Yüksek ihtimalle sapıtır. Her saniye 0.0005 saniye geri kalıyor gibi düşün hiçbir işlem yapmasa bile. CPU'nun yük altında olması osu busu derken her gün 1-2 dakikaya kadar interval kaçabilir. Saat 12:00'de dersin ama 11:59'dan 12:01'e geçer mesela
Şunu kullan https://www.npmjs.com/package/cron
Yok illa kendim yazacağım dersen
process.hrtime kullanman gerecek https://nodejs.org/api/process.html#process_process_hrtime_time
Paketi kullan geç kafa yorma
const CronJob = require('cron').CronJob; const job = new CronJob('0 0 */1 * * *', function() { console.log('Saatte bir işlemler burada'); }); job.start();
by_Tet tarafından 28/Şub/22 20:17 tarihinde düzenlenmiştir -
by_Tet bunu yazdı
Hocam cron için setInterval'i kullanma. Yüksek ihtimalle sapıtır. Her saniye 0.0005 saniye geri kalıyor gibi düşün hiçbir işlem yapmasa bile. CPU'nun yük altında olması osu busu derken her gün 1-2 dakikaya kadar interval kaçabilir. Saat 12:00'de dersin ama 11:59'dan 12:01'e geçer mesela
Şunu kullan https://www.npmjs.com/package/cron
Yok illa kendim yazacağım dersen
process.hrtime kullanman gerecek https://nodejs.org/api/process.html#process_process_hrtime_time
Paketi kullan geç kafa yorma
const CronJob = require('cron').CronJob; const job = new CronJob('0 0 */1 * * *', function() { console.log('Saatte bir işlemler burada'); }); job.start();
Bunu görmüştüm ama bunun için paket kullanmaya değer mi diye düşünüyorum açıkçası.
Çünkü tek yapması gereken değerleri saatte bir veritabanına eklemesi. Çok dakik bir iş olmayacak hocam.
Nedir düşüncen? setInterval mi yoksa boşver onu node-cron kur geç mi. :)
-
biri bunu yazdıby_Tet bunu yazdı
Hocam cron için setInterval'i kullanma. Yüksek ihtimalle sapıtır. Her saniye 0.0005 saniye geri kalıyor gibi düşün hiçbir işlem yapmasa bile. CPU'nun yük altında olması osu busu derken her gün 1-2 dakikaya kadar interval kaçabilir. Saat 12:00'de dersin ama 11:59'dan 12:01'e geçer mesela
Şunu kullan https://www.npmjs.com/package/cron
Yok illa kendim yazacağım dersen
process.hrtime kullanman gerecek https://nodejs.org/api/process.html#process_process_hrtime_time
Paketi kullan geç kafa yorma
const CronJob = require('cron').CronJob; const job = new CronJob('0 0 */1 * * *', function() { console.log('Saatte bir işlemler burada'); }); job.start();
Bunu görmüştüm ama bunun için paket kullanmaya değer mi diye düşünüyorum açıkçası.
Çünkü tek yapması gereken değerleri saatte bir veritabanına eklemesi. Çok dakik bir iş olmayacak hocam.
Nedir düşüncen? setInterval mi yoksa boşver onu node-cron kur geç mi. :)
setInterval kullan geç o zaman hocam :) 1 saat olmaz bazen 1saat 1dk felan olur çok mühim değilse uğraşma.
Hiçbir yükü olmaz, işlemcide değil lapic/hpet (artık anakartın timeri her ne ise) orada süre tutulur
**ek olarak konudan bağımsız; paket kullanmaktan korkma hocam node.js'te. Javascript kodların assembly'e çevriliyor zaten, gerekli gereksiz ne varsa onu node.js hallediyor. Sen performans olarak "çok koda" değil sadece kodunun işlem yüküne odaklan.
by_Tet tarafından 28/Şub/22 20:38 tarihinde düzenlenmiştir -
by_Tet bunu yazdıbiri bunu yazdıby_Tet bunu yazdı
Hocam cron için setInterval'i kullanma. Yüksek ihtimalle sapıtır. Her saniye 0.0005 saniye geri kalıyor gibi düşün hiçbir işlem yapmasa bile. CPU'nun yük altında olması osu busu derken her gün 1-2 dakikaya kadar interval kaçabilir. Saat 12:00'de dersin ama 11:59'dan 12:01'e geçer mesela
Şunu kullan https://www.npmjs.com/package/cron
Yok illa kendim yazacağım dersen
process.hrtime kullanman gerecek https://nodejs.org/api/process.html#process_process_hrtime_time
Paketi kullan geç kafa yorma
const CronJob = require('cron').CronJob; const job = new CronJob('0 0 */1 * * *', function() { console.log('Saatte bir işlemler burada'); }); job.start();
Bunu görmüştüm ama bunun için paket kullanmaya değer mi diye düşünüyorum açıkçası.
Çünkü tek yapması gereken değerleri saatte bir veritabanına eklemesi. Çok dakik bir iş olmayacak hocam.
Nedir düşüncen? setInterval mi yoksa boşver onu node-cron kur geç mi. :)
setInterval kullan geç o zaman hocam :) 1 saat olmaz bazen 1saat 1dk felan olur çok mühim değilse uğraşma.
Hiçbir yükü olmaz, işlemcide değil lapic/hpet (artık anakartın timeri her ne ise) orada süre tutulur
**ek olarak konudan bağımsız; paket kullanmaktan korkma hocam node.js'te. Javascript kodların assembly'e çevriliyor zaten, gerekli gereksiz ne varsa onu node.js hallediyor. Sen performans olarak "çok koda" değil sadece kodunun işlem yüküne odaklan.
Harika bilgiler. Çok teşekkür ederim. Paket yüklemekten korkuyordum açıkçası.
Saat çok önemli değil bu projede. Ortalama 1 saat yeterli. 55 dk olmuş, 65 dk olmuş çok önemli değil o gecikmeler. :)
-
-
Bu tarz işler de server içinde için AgendaJS kullanıyorum. Çok memnunum. AgenDash diye bir dash board plug'ini de var. inanilmaz güzel calisiyor.
client de ise setInterval de olur cronJs de olur 100 tane interval yoksa performans cok fark etmez.